JAVA substring split 특수문자 문자열 자르기
1. substring
문자열중 일부를 뽑아오거나 여러 Data를 하나의 문자열로 받아 다시 각 항목별로 나누어 분류하는데 많이 사용합니다. 중간에 구분자가 없는 경우에 사용합니다. 문자열이 길어지면 눈이 튀어나와 힘들죠.
substring의 정의는 다음과 같습니다.
public String substring(int beginIndex, int endIndex) beginIndex : 시작 index endIndex : 종료 index |
사용시 주의 사항은 beginIndex는 0에서 시작하고 endIndex는 자르려는 글자 끝 index보다 1을 더해줘야 합니다.
String str = “ABCDEFGHIJKL”;
문자열 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
Index |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
A부터 C까지만 잘라 오려면
String getStr1 = str.substring(0, 3);
D부터 K까지만 잘라 오려면
String getStr2 = str.substring(3, 11);
F부터 끝까지 가져오려면
String getStr3 = str.substring(5);
간단한 테스트 입니다.
public static void subString() {
String str = "ABCDEFGHIJKL";
String getStr1 = str.substring(0, 3); String getStr2 = str.substring(3, 11); String getStr3 = str.substring(5);
System.out.println("str.substring(0, 3) : "+ getStr1); System.out.println("str.substring(3, 11) : "+ getStr2); System.out.println("str.substring(5) : "+ getStr3);
} |
2. split
substring과 같이 여러 Data를 구분자를 추가하여 하나의 문자열로 묶어서 수신한 후 다시 나누거나 문자열에 규칙적인 반복 문자가 있을 경우 이용하여 문자열을 나누어 배열화 하는 기능입니다. 중간에 꼭 규칙적인 문자가 있어야 가능하겠죠.
split의 정의는 다음과 같습니다.
public String[] split(String regex) regex : 규칙적 어구 |
기호를 구분자로
String str1 = "A-B-CDEFG-HIJKL";
str1 문자열에는 “-“ 이 문자가 반복되어 구분자로 사용할 수 있습니다.
String getStr1[] = str1.split("-");
이렇게 하면 getStr1[] 배열에 문자열이 “-“으로 나뉘어져 들어가게 됩니다. 주민번호, 전화번호등에 가장 많이 사용하는 방법이죠.
String str1 = "A-B-CDEFG-HIJKL";
String getStr1[] = str1.split("-");
for(int i=0; i<getStr1.length;i++) { System.out.println("getStr1 ["+ i + "] : " + getStr1[i]); } |
문자를 구분자로
String str2 = "ABTTCDETTFGHIJKTTL";
str2 문자열에는 “TT” 문자가 반복적으로 들어있어 구분자로 사용할 수 있습니다.
String getStr2[] = str2.split("TT");
이렇게 하면 “TT”로 구분된 문자가 getStr2[] 배열에 들어갑니다.
String str2 = "ABTTCDETTFGHIJKTTL";
String getStr2[] = str2.split("TT");
for(int i=0; i<getStr2.length;i++) { System.out.println("getStr2 ["+ i + "] : " + getStr2[i]); } |
특수문자를 구분자로
String str2 = "A|B|CDEFG|HIJKL";
str2는 특수문자 “|”가 중간에 구분자로 들어가 있습니다. 특수문자를 일반적인 문자처럼 구분자로 사용하게 되면 엉뚱한 결과가 나옵니다. 엉뚱하다기 보다는 그냥 글자를 하나씩 배열에 입력하고 끝나게 됩니다. 이런 경우는 두가지 방법으로 처리를 하는데 하나는 특수문자 앞에 “\\”를 써주거나 특수문자를 “[]”로 감싸줍니다.
String str3 = "A|B|CDEFG|HIJKL";
// String getStr3[] = str3.split("[|]"); // String getStr3[] = str3.split("[.]"); String getStr3[] = str3.split("\\|");
for(int i=0; i<getStr3.length;i++) { System.out.println("getStr3 ["+ i + "] : " + getStr3[i]); } |
- copy coding -