본문 바로가기
2_ 바삭바삭 프로그래밍/Java

Java - 문자열 정리

by 준환이형님_ 2011. 1. 17.

문자열이란 문자를 나열한 것을 이르며, 자바에서의 문자열은 객체이다.


java.lang.String (Object + Serializable, CharSequence, Comparable)

String클래스는 한번 객체를 생성한 후에는 변경될 수 없고, 메서드에서 처리된 결과는 새로운 문자열을 생성해서 반환할 뿐이다.


문자열의 생성

문자열은 new연산자를 통해서 생성할 수도 있고, 문자열 리터럴을 사용해서도 생성할 수 있다. 또한, 여러가지 방식의 생성자가 존재한다.

String str1 = "Hello!";
String str2 = new String("Hello!");

문자열의 길이

public int length()

현재 문자열을 구성하는 문자의 갯수를 반환하는 메서드.

public char charAt(int index)

현재 문자열에서 0부터 세기 시작해서 index번째의 문자를 반환한다.

public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

현재 문자열의 일부를 char의 배열로 변환하는 메서드.


문자열의 결합

public String concat(String str)

현재 문자열의 끝에 지정된 문자열을 덧붙인다. 일반적으로 문자열의 결합에는 + 연산자가 사용된다.

문자열을 숫자로 변환

Number클래스의 하위 클래스에서 정의된 valueOf()메서드 또는 parse***()메서드를 사용할 수 있다. valueOf()는 객체를 반환하고, parse***()는 원시자료형으로 반환한다.

int a = Integer.valueOf("100").intValue();
int b = Integer.parseInt("100"); 

숫자를 문자열로 변환

원시자료형인 숫자를 빈문자열과 + 연산자로 결합하면 쉽게 문자열로 변환할 수 있다. 또는 String클래스의 valueOf()메서드를 사용해서 변환할 수도 있다. 그리고, 각 숫자 클래스에서 정의된 toString()을 사용해도 된다.

부분문자열 추출

public String substring(int beginIndex) 
public String substring(int beginIndex, int endIndex)

현재 문자열로부터 부분 문자열을 반환한다.


기타 문자열 처리 메서드

public String[] split(String regex) 
public String[] split(String regex, int limit)

문자열을 정규표현식을 사용해서 쪼개고 문자열의 배열로 반환한다.

public CharSequence subSequence(int beginIndex, int endIndex)

문자열의 부분문자열을 이용해서 CharSequence 객체를 반환한다.

public String trim()

문자열 앞뒤의 공백문자들을 제거한다.

public String toLowerCase() 
public String toUpperCase()

문자열의 대소문자를 변환한다.


찾기

public int indexOf(int ch) 
public int indexOf(int ch, int fromIndex) 
public int indexOf(String str) 
public int indexOf(String str, int fromIndex)

문자열에서 주어진 문자가 처음으로 나타나는 위치를 반환한다.

public int lastIndexOf(int ch) 
public int lastIndexOf(int ch, int fromIndex) 
public int lastIndexOf(String str) 
public int lastIndexOf(String str, int fromIndex)

문자열에서 주어진 문자가 마지막으로 나타나는 위치를 반환한다.

public boolean contains(CharSequence s)

현재 문자열이 주어진 문자열(CharSequence)을 포함하고 있으면 true를 반환한다. CharSequence는 String에서 구현한 인터페이스이므로 매개변수로 문자열을 사용해도 무방하다.


치환

public String replace(char oldChar, char newChar) 
public String replace(CharSequence target, CharSequence replacement) 
public String replaceAll(String regex, String replacement) 
public String replaceFirst(String regex, String replacement)

문자 또는 부분문자열을 찾아서 새로운 문자 또는 문자열로 바꾼다.


비교

public boolean endsWith(String suffix) 
public boolean startsWith(String prefix) 
public boolean startsWith(String prefix, int toffset)

해당 문자열이 주어진 문자열로 시작하거나 끝나는 경우에 true를 반환한다.

public int compareTo(String anotherString) 
public int compareToIgnoreCase(String str)

두 개의 문자열을 사전순으로 비교해서 현재 문자열이 더 크다면 양수, 작다면 음수, 같다면 0을 반환한다.

public boolean equals(Object anObject) 
public boolean equalsIgnoreCase(String anotherString)

두개의 문자열을 비교해서 동일한 문자 순서라면 true를 반환한다.

public boolean regionMatches(int toffset, String other, int ooffset, int len) 
public boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

두개의 문자열의 부분을 비교한다. 현재문자열의 toffset위치부터 len길이까지, 주어진 문자열의 ooffset위치부터 len길이까지를 비교한다.

public boolean matches(String regex)

정규표현식에 대한 일치 여부를 반환한다.


java.lang.StringBuilder (Object + Serializable, Appendable, CharSequence)

StringBuilder클래스는 String클래스와 비슷하지만 내용을 변경할 수있다는 것이 차이점이다. 내부적으로는 문자의 순서를 포함하고 있는 가변길이 배열로 취급된다. 특별히 StringBuilder의 장점을 활용해야 하는 경우가 아니라면 가급적 String을 사용해야 한다.

public int length() 
public int capacity()

length()는 String클래스와 마찬가지로 문자열의 길이를 반환한다. capacity()는 문자열에 할당된 공간이다. capacity는 항상 length보다 크거나 같다.

public void setLength(int newLength) 
public void ensureCapacity(int minimumCapacity)

String클래스에는 없는 length와 capacity를 설정하는 메서드.

public StringBuilder append*** ) 
public StringBuilder delete(int start, int end) 
public StringBuilder deleteCharAt(int index) 
public StringBuilder insert*** ) 
public StringBuilder replace(int start, int end, String str) 
public void setCharAt(int index, char ch) 
public StringBuilder reverse() 
public String toString()

각각 추가, 삭제, 삽입, 치환 등 문자열을 처리하는 메서드 들이다.