자바에는 문자열과 관련된 함수가 많다. 그중에서 문자열과 관련된 메서드를 확인해보려고 합니다.

  1. substring
  2. split
  3. indexOf / lastIndexOf / charAt / length
  4. StringBuilder

1. substring : 문자열이 가지고 있는 index의 값으로 문자열을 자르는 메서드

String abc = "ABCD";
String substring1 = abc.substring(0);
String substring2 = abc.substring(1);
String substring3 = abc.substring(2);
String substring4 = abc.substring(3);

System.out.println("abc = " + abc);                 // abc = ABCD
System.out.println("substring1 = " + substring1);   // substring1 = ABCD
System.out.println("substring2 = " + substring2);   // substring2 = BCD
System.out.println("substring3 = " + substring3);   // substring3 = CD
System.out.println("substring4 = " + substring4);   // substring4 = D

String qwerty = "QWERTY";
String substring01 = qwerty.substring(0, 1);
String substring02 = qwerty.substring(0, 2);
String substring24 = qwerty.substring(2, 4);
String substring46 = qwerty.substring(4, 6);
String substring56 = qwerty.substring(5, 6);

System.out.println("qwerty = " + qwerty);           // qwerty = QWERTY
System.out.println("substring01 = " + substring01); // substring01 = Q        
System.out.println("substring02 = " + substring02); // substring02 = QW        
System.out.println("substring24 = " + substring24); // substring24 = ER        
System.out.println("substring46 = " + substring46); // substring46 = TY
System.out.println("substring56 = " + substring56); // substring56 = Y

기본적으로 subString은 기본적으로 각 글자의 index 값을 이용해서 해당 문자를 구하는 방식입니다.

  1. 기본적으로 index의 값이기 때문에 첫 글자의 index값은 0부터 시작합니다.
  2. substring의 파라미터가 1개뿐이라면 해당 위치의 글자부터 글자를 출력합니다.
  3. substring의 파라미터가 2개라면 (시작 위치, 마지막 위치) 만큼의 글자를 출력합니다.

2. Split : 지정한 문자를 기준으로 문자열을 잘라 배열로 반환하는 메서드

String arr = "";
for (int i = 0; i < 9; i++) {
    arr += i + "#";
}

System.out.println("arr = " + arr); // arr = 0#1#2#3#4#5#6#7#8#

String[] arrNoLimit = arr.split("#");
System.out.println("arrNoLimit = " + Arrays.toString(arrNoLimit)); // arrNoLimit = [0, 1, 2, 3, 4, 5, 6, 7, 8]

String[] arr0 = arr.split("#", 0);
System.out.println("arrString0 = " + Arrays.toString(arr0)); // arrString0 = [0, 1, 2, 3, 4, 5, 6, 7, 8]

String[] arr1 = arr.split("#", 1);
System.out.println("arrString1 = " + Arrays.toString(arr1)); // arrString1 = [0#1#2#3#4#5#6#7#8#]

String[] arr2 = arr.split("#", 2);
System.out.println("arrString2 = " + Arrays.toString(arr2)); // arrString2 = [0, 1#2#3#4#5#6#7#8#]

String[] arr3 = arr.split("#", 3);
System.out.println("arrString3 = " + Arrays.toString(arr3)); // arrString3 = [0, 1, 2#3#4#5#6#7#8#]

String[] arr5 = arr.split("#", 5);
System.out.println("arrString5 = " + Arrays.toString(arr5)); // arrString5 = [0, 1, 2, 3, 4#5#6#7#8#]

String[] arr9 = arr.split("#", 9);
System.out.println("arrString9 = " + Arrays.toString(arr9)); // arrString9 = [0, 1, 2, 3, 4, 5, 6, 7, 8#]

String[] arr10 = arr.split("#", 10);
System.out.println("arrString10 = " + Arrays.toString(arr10)); // arrString10 = [0, 1, 2, 3, 4, 5, 6, 7, 8, ]
  1. split의 파라미터가 하나라면 해당 문자열을 기준으로 문자열을 잘라서 배열을 만듭니다.
  2. split의 파라미터가 두 개라면 해당 문자열을 기준으로 자르되 원하는 숫자만큼 자르게 됩니다.
    • 두 번째 파라미터로 0을 대입하면 파라미터를 하나만 사용한 것과 동일한 결과를 출력합니다.
    • 두 번째 파라미터가 분리시킬 개수보다 많다면 빈 공백 값 하나를 만들고 더 이상 출력하지 않습니다.

3. indexOf / lastIndexOf / charAt / length : 문자열 찾는 메서드

String abc = "abcdefghijkba";
System.out.println("abcLength = " + abc.length()); // 13

System.out.println("z = " + abc.indexOf("z"));      // z = -1 ( 없는 데이터 )

System.out.println("a = " + abc.indexOf("a"));      // a = 0
System.out.println("aa = " + abc.lastIndexOf("a")); // aa = 12

System.out.println("b = " + abc.indexOf("b"));      // b = 1
System.out.println("bb = " + abc.lastIndexOf("b")); // bb = 11

System.out.println("first a = " + abc.charAt(0));  // a
System.out.println("last a = " + abc.charAt(12));  // a

System.out.println("first b = " + abc.charAt(1));  // b
System.out.println("last b = " + abc.charAt(11));  // b
  1. indexOf(String s) : 문자열의 첫 번째 index 값을 반환합니다.
  2. lastIndexOf(String s) : 문자열의 마지막 index값을 반환합니다.
  3. charAt(int index) : index값을 넣으면 해당 위치의 문자를 반환합니다.
  4. length() : 해당 문자열의 문자열의 개수를 반환합니다.

4.  StringBuilder : 문자열 관련 객체로 메서드를 이용해서 문자열을 조작할 수 있다.

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("111"); // 문자열 추가
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 111

stringBuilder.insert(1, "222"); // 문자열 삽입
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 122211

stringBuilder.replace(3,5, "55"); // 문자열 치환
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 122551

String substring = stringBuilder.substring(3, 5); // 문자열 부분 추출
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 122551
System.out.println("######################### substring = " + substring); // substring = 55

stringBuilder.delete(3,5); // 문자열 삭제
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 1221

stringBuilder.deleteCharAt(stringBuilder.length() -1); // 해당 문자 하나 삭제
System.out.println("stringBuilder = " + stringBuilder); // stringBuilder = 122
// 가장 많이 사용하는 방식 중 하나로 마지막 문자만을 제거할 때 사용

stringBuilder.setLength(10); // 문자열 길이 조정
System.out.println("stringBuilder = " + stringBuilder); // 122       (빈공백 포함)
  1. append : 문자열의 마지막에 원하는 문자열을 추가하는 방식
  2. insert : 문자열 중 원하는 위치에 문자열을 추가하는 방식
  3. substring : 문자열 중 원하는 부분을 추출하는 방식. 다른 점은 StringBuilder 데이터를 변경하는 것은 아닙니다.
  4. delete : 문자열 중 원하는 만큼의 문자를 삭제하는 방식
  5. deleteCharAt : 문자열 중 원하는 위치의 문자 하나를 제거하는 방식
  6. setLength : 문자열 길이를 지정할 수 있습니다.
    • 데이터의 길이가 길다면 길이만큼 데이터를 자르고, 데이터가 짧다면 공백을 추가합니다.

이외에도 StringUtils 등 다양한 문자열과 관련된 함수들이 존재합니다.

 

그중에서 가장 흔하게 볼 수 있는 함수만 정리해봤습니다.

 

도움이 되었다면 좋아요만 눌러주세요. 감사합니다.