지금까지 문자열을 다루고, 문자열에 속한 문자들을 다룰 때 주로 charAt() 메소드를 이용하여 코드를 작성했다.
하지만 charAt()을 사용하면서 반복문도 함께 사용되고 코드가 길어지는 것 같아
문자열을 효율적으로 다룰 다른 메소드들을 공부해보았다.
java.lang.String 클래스의 메소드
1. charAt(i)
i 번째의 문자 반환
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.charAt(2)); //l 출력
}
}
2. equals()
문자열 비교 후 같다면 true, 다르면 false 반환
대소문자 구분
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
String b = "Hello World";
String c = "Goodbye World";
System.out.println(a.equals(b)); //true
System.out.println(a.equals(c)); //false
}
}
3. equalsIgnoreCase()
equals()와 같이 문자열을 비교하지만 대소문자 구분하지 않음
4. length()
문자열의 길이 반환
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.length()); //11
}
}
5. trim()
양 끝에 공백이 있다면 제거하여 새로운 문자열 반환
기존의 문자열을 수정하는 것이 아니라 새로운 문자열 인스턴스 생성
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = " Hello World ";
System.out.println(a.trim()); //"Hello World"
}
}
6. indexOf(st, i)
문자열에서 특정문자 또는 특정문자열 st가 시작되는 인덱스 반환 (문자열에 없다면 -1 반환)
인덱스 i가 없으면 문자열의 가장 처음부터 검색, 인덱스 i가 있다면 인덱스 i부터 검색
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.indexOf("H")); //0
System.out.println(a.indexOf("H", 5)); //-1
System.out.println(a.indexOf("World")); //6
}
}
7. lastIndexOf()
indexOf()와 같이 문자열 검색하지만 문자열의 뒤에서부터 검색
8. startWith() / endWith()
문자열의 시작 / 끝이 해당 문자와 일치하는지 확인
대소문자 구분
일치하면 true 일치하지 않으면 false 반환 (boolean 형)
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.startsWith("H")); //true
System.out.println(a.endsWith("D")); //false
}
}
9. replace() / replaceAll()
특정 문자열 교체
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "aaabbbcccabcaaabbbabcccc";
System.out.println(a.replace("abc", "얍")); //aaabbbccc얍aaabbb얍ccc
System.out.println(a.replaceAll("[abc]", "얍")); //얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍얍
}
}
replace()와 replaceAll()의 차이는 위의 예제코드에서 확인 가능하다.
replace()는 정규식 사용이 불가능하고 특정 문자열만을 변환한다.
"abc"라는 문자열을 "얍"이라는 문자열로 변환하고자 할 때 문자열 내에 "abc"를 이루고 있는 문자열부분만을 교체한다.
replaceAll() 은 정규식 사용으로 문자열에 있는 모든 문자변환이 가능하다.
"[abc]"의 경우 문자열 내의 모든 a, b, c 를 따로 교체대상으로 인식한다.
10. split()
문자열을 구분자를 기준으로 구분하여 배열 생성
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "a aa aaa aaaa aaaaa";
String b[] = a.split(" "); //공백을 기준으로 나누어 배열 생성
for(int i=0;i<b.length;i++) {
System.out.println(b[i]);
}
}
}
[출력]
a
aa
aaa
aaaa
aaaaa
11. substring(m, n)
인덱스 m부터 n까지의 문자열 반환
시작 인덱스만 제공 시 시작인덱스~문자열 끝까지
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.substring(4, 8)); //o Wo
System.out.println(a.substring(5)); // World
}
}
12. toLowerCase() / toUpperCase()
문자열을 모두 소문자 / 대문자로 변환
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
System.out.println(a.toLowerCase()); //hello world
System.out.println(a.toUpperCase()); //HELLO WORLD
}
}
13. valueOf(boolean/int/double/char)
다른 자료형들을 받아 String형으로 변환
14. isEmpty()
문자열 길이가 0이면 true, 0이 아니면 false 반환
package java_practice;
public class StringMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Hello World";
String b = "";
System.out.println(a.isEmpty()); //false
System.out.println(b.isEmpty()); //true
}
}