문자열의 각 문자 접근
String a = " abcd def ";
String b = " xyz\t";
String c = a.trim();
String d = b.trim();
c에는 abcd def
d에는 xyz가 저장된다.
String a = "class";
char c = a.charAt(2);
//"class"에 포함된 's'의 개수를 세는 코드
int count = 0;
String a = "class";
for(int i = 0; i < a.length(); i++)
{
if(a.charAt(i) == 's')
{
count++;
}
}
String 클래스 메소드 활용
public class StringEX {
public static void main(String[] args) {
String a = new String(" C#");
String b = new String(",C++ ");
System.out.println(a + "의 길이는 " + a.length());
System.out.println(a.contains("#"));
a = a.concat(b);
System.out.println(a);
a = a.trim();
System.out.println(a);
a = a.replace("C#", "Java");
System.out.println(a);
String s[] = a.split(","); // 문자열을 문자열을 기준으로 분리 -> "" 사용해야 함.
for(int i = 0; i < s.length; i++)
{
System.out.println(s[i]);
}
a = a.substring(5); // 인덱스 5부터 끝까지 서브 스트링 리턴
System.out.println(a);
}
}
공백 제거 함수 비교 #1
String.trim()
String.strip()
공백문자 확인 Character.isWhitespace(int codePoint)
int count = 0;
for(int i = 0; i < 65536; i++)
{
if(Character.isWhitespace(i))
{
count++;
System.out.printf("0x%x, ", i);
}
}
25개이다.
문자열 검색
int indexOf(String str)
int indexOf(String str, int fromIndex)
boolean contains(String str)
문자열 검색 예제
public class SearchString {
public static void main(String[] args) {
String s1 = "Convert an integer value to float and print the int value found.";
String searchWord = "int";
boolean found = false;
int startIndex = 0;
int index = 0;
int foundCount = 0;
System.out.println(s1.indexOf(searchWord));
while(true)
{
index = s1.indexOf(searchWord, startIndex);
if(index == -1)
{
if(foundCount == 0) System.out.println("Not Found");
break;
}
else
{
System.out.println(index + " ");
startIndex = index + searchWord.length();
foundCount++;
}
}
System.out.println(foundCount);
}
}
출력은 11 11 40 48 3이 되고
startIndex = index + searchWord.length(); 이 핵심이다.
문자열 치환 : replace
replace() 메소드
public String replace(char oldChar, char newChar)
public String replace(charSequence target, CharSequence replacement)
-> 치환할 문자나 문자열 입력
예제
String msg1 = "Hello World";
String msg2 = "This is a replace() method test program.";
System.out.println(msg1.replace('o', 'A")); // 문자 변환
System.out.println(msg1.replace("l", "L")); // 문자열 변환
System.out.println(msg2.replace(" ", "")); // 모든 공백 제거
valueOf()
StringBuffer 클래스
생성자
StringBuffer() : 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성
StringBuffer(CharSequence seq) : seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성
StringBuffer(int capacity) : 지정된 초기 크기를 갖는 스트링 버퍼 객체 생성
StringBuffer(String str) : 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성
CharSequence와 String의 차이 : CharSequence는 문자열 처리를 위한 인터페이스
주요 메소드
append : 문자열 덧붙이기
insert : 문자열 삽입 -> 스트링 버퍼의 offset위치에 문자열 삽입 -> offset + 1부터 들어감
replace : i부터 j - 1까지를 교체
delete : start부터 end가 지정하는 문자 앞까지 삭제
setLength : 스트링 버퍼 내 문자열 길이를 newLength로 재설정, 현재 길이보다 큰 경우 NULL로 채우며, 작은 경우는 기존 문자열이 잘린다.
StringTokenizer 클래스
String query = "name=kitae&addr=seoul&age=21";
StringTokenizer st = new StringTokenizer(query, "&");
괄호에 &=를 입력하면 &와 =으로 token을 나눈다.
생성자와 주요 메소드
생성자 -
StringTokenizer(String str) : str 스트링의 각 문자를 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성
StringTokenizer(String str, String delim) : str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성
StringTokenizer(String str, String delim, boolean returnDelims) : str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성, returnDelim가 true이면 delim이 포함된 문자도 토큰에 포홤된다.
주요 메소드 -
int countToken() : 스트링 토크나이저가 분리한 토큰의 개수를 리턴
boolean hasMoreTokens() : 스트링 토크나이저에 다음 토큰이 있으면 true 리턴
String nextToken() : 스트링 토크나이저에 들어 있는 다음 토큰 리턴 -> 한번에 한개씩 리턴하는구나.
StringTokenizer 클래스 메소드 활용
import java.util.StringTokenizer;
public class StringTokenizerEx {
public static void main(String[] args) {
String query = "name=kitae&addr=seoul&age=21";
StringTokenizer st = new StringTokenizer(query, "&=");
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
}