String ↔ char[]String s = "abc";
char[] arr = s.toCharArray();
String t = new String(arr);
String s = "abcabcdef";
s.contains("abc"); // true
s.startsWith("ab"); // true
s.endsWith("yz"); // false
int idx = s.indexOf("abc"); // 0
int last = s.lastIndexOf("abc"); // 3
만약 못 찾으면?
-1
StringBuilder문자열을 반복해서 조작한다면 그냥 이거 쓰자.
그냥 String은 불변이라 매번 새 객체를 만들 가능성이 커서 비효율적이다.
StringBuilder sb = new StringBuilder();
sb.append("abc");
sb.append(123);
sb.append('x');
String res = sb.toString(); // abc123x
sb.deleteCharAt(i);
sb.delete(l, r);
sb.insert(i, "abc");
sb.reverse();
sb.charAt(i);
sb.setCharAt(i, 'x');
불변인 문자열은 수정이 안되는데 StringBuilder는 setCharAt()으로 가능하다.
String s = "a,b,c";
String[] parts = s.split(",");
단, 정규식이기 때문에 . | + * ? ( ) [ ] { } ^ $는 예상과 다른 결과가 나올 수 있음에 유의
그럴 때는 아래처럼 escape 처리해준다.
String s = "a.b.c";
String[] parts = s.split("\\.");
int x = Integer.parseInt("123");
String s1 = String.valueOf(123);
boolean palindrome = true;
for (int l=0, r=s.length()-1; l<r; l++, r--) {
if (s.charAt(l) != s.charAt(r)) {
palindrome = false;
break;
}
}
StringBuilder.reverse() 써도 된다.
char[] a1 = a.toCharArray();
char[] a2 = b.toCharArray();
Arrays.sort(a1);
Arrays.sort(a2);
boolean same = Arrays.equals(a1, a2);