[프로그래밍언어][Java(자바)] (Class) String - 문자열 파싱(parsing), 이어 붙이기, 포맷, 대체 등 ( + StringTokenizer, StringBuilder, StringBuffer )

728x90

 

Class String

 

Modifier and Type Method Description
int length() 문자열의 길이 반환
char charAt(int index) 문자열의 index 번째 문자 반환
String[] split(String regex) 정규식에 부합하는 문자열을 기준으로 전체 문자열을 자르고 배열 형태로 반환
char[] toCharArray() 문자열을 문자 배열로 반환
boolean equals(Object obj) 두 문자열이 같은지 여부 반환
int compareTo(String str) 두 String 개체 비교 ( 사전적으로 )
( 인수보다 작으면 0 보다 작은 값, 크면 0 보다 큰 값 )
String replace(char oldChar, char newChar)
replace(
CharSequence target, CharSequence replacement)
문자열에서 모든 oldChar/target을 newChar/replacement로 대체한 문자열 반환
String replaceAll(String regex, String replacement) 정규 표현식( regex )과 일치하는 부분을 replacement로 대체 후 반환
String toUpperCase() 문자열에서 모든 문자를 대문자로 변환
String toLowerCase() 문자열에서 모든 문자를 소문자로 변환
static String format(String format, Object... args) 인수들을 format 형식에 맞춰 변환
boolean startsWith(String prefix) 문자열이 prefix로 시작하는지 여부 반환
boolean endsWith(String suffix) 문자열이 suffix로 끝나는지 여부 반환
boolean contains(CharSequence s) 문자열에 인수가 포함하는지 여부 반환
int indexOf(int ch
indexOf(
String str
문자열에서 인수가 위치한 인덱스 반환
String subString(int beginIndex, int endIndex) 두 인덱스 사이의 문자열을 반환
String trim() 앞 뒤 공백 제거된 문자열 반환
static String valueOf(int i)
인수를 String 형태로 반환
( int, char, double, float, long, boolean, char[], Object, ... )
String concat(String str) 문자열 뒤에 인수를 이어붙인 문자열 반환

 

( https://docs.oracle.com/javase/8/docs/api/java/lang/String.html )

 

 

▶  문자열의 문자 하나씩 탐색

String s;

// [way 1]
for (int i = 0; i < st.length(); ++i) { st.charAt(i); ...}

// [way 2]
for (char c : st.toCharArray()) { ... }

// [way 3]
for (String s : st.split("")) { ... }

 

▶  문자열 바꾸기 ( 대체 )

String s; 

// 삭제
// ex) "a" 제거
s = s.replace("a", "");
// ex) 공백 제거
s = s.replaceAll(" ", "");	// [way 1]
s = s.replaceAll("\s", "");	// [way 2]
// ex) 알파벳 제거
s = s.replaceAll("[a-zA-Z]", "");				// [way 1]
s = s.toUpperCase().replaceAll("[A-Z]", "");	// [way 2]
// ex) 숫자 제거
s = s.replaceAll("[0-9]", "");	// [way 1]
s = s.replaceAll("\\d", "");		// [way 2]
// ex) 특수문자 제거
s = s.replaceAll("[^a-zA-Z0-9]", "");	// [way 1]
s = s.replaceAll("\\W", "");			// [way 2]
s = s.replaceAll("[^\\w]", "");		// [way 3]

// 대체
// ex) "aa" -> "bb"
s = s.replace("aa", "bb");
// ex) 여러개의 점을 하나로 대체 
s = s.replaceAll("\\.+", "."); 	// [way 1] 
s = s.replaceAll("[.]{2,}", ".") // [way 2]

( 정규식  ☞  https://hyunjiishailey.tistory.com/501 )

 

▶  문자열 자르기 / 나누기 ( 파싱 : parsing )  ★

  • String.split(String regex)
String s;
String ss[];

// 한 문자씩 자르기
ss = s.split("");

// 공백 문자를 기준으로 자르기
ss = s.split(" ");			// 공백 하나 [way 1]
ss = s.split("\s");		// 공백 하나 [way 2]
ss = s.split("\s+");		// 공백 여러 개

// 기호를 기준으로 자르기
ss = s.split("\\.");		// 온점 .

// 여러 기호를 기준으로 자르기 ( '|' : or )
ss = s.split("#\\{|\\}");	// MyBatis param - #{val}
  • StringTokenizer  ( regex( regular expression : 정규식 ) 대신 delim( delimiter : 구분자 ) )
String s;
StringTokenizer st;

// 공백 문자를 기준으로 자르기 (여러 개 포함)
st = new StringTokenizer(s);			// 기본 구분자는 공백 " \t\n\r\f" [way 1]
st = new StringTokenizer(s, " ");		// [way 2]

// 기호를 기준으로 자르기
st = new StringTokenizer(s, ".");		// '.'
st = new StringTokenizer(s, "/");		// '/'
st = new StringTokenizer(s, "#|$");	// '#' or '$'

while (st.hasMoreTokens())
	st.nextToken();

 

▶  문자열 이어 붙이기  ★

  • '+' 연산자 ( 오래 걸림 )
String s1, s2, result;
result = s1 + s2;	// 뒤에 이어 붙이기
result = s2 + s1;	// 앞에 이어 붙이기
  • String.concat(String str)
String s1, s2, result;
result = s1.concat(s2);	// 뒤에 이어 붙이기
result = s2.concat(s1);	// 앞에 이어 붙이기
  • StringBuilder  ( StringBuffer 와 비슷하나, 더 빠름 )
String s1, s2, result;
result = new StringBuilder(s1).append(s2).toString();	// 뒤에 이어 붙이기
result = new StringBuilder(s1).insert(0, s2).toString();	// 앞에 이어 붙이기
// 이 외에 delete(), replace(), reverse(), setCharAt() 등 기능도 있음
  • StringBuffer  ( StringBuilder 와 비슷하나, 스레드 동기화 지원 (멀티 스레드 환경) )
String s1, s2, result;
result = new StringBuffer(s1).append(s2).toString();		// 뒤에 이어 붙이기
result = new StringBuffer(s1).insert(0, s2).toString();	// 앞에 이어 붙이기

 

▶  문자열 형식 지정

double d; int n;  int m;
// ex) 소수점 m 번째 자리까지 표현
String format1 = String.format("%.3f", d); 			// ex) 소수점 3 번째 자리
String format2 = String.format("%." + m + "f", d); 	// ex) 소수점 m 번째 자리
// ex) m 자리로 맞춰 표현 (빈 공간은 0 으로 채움)
String format3 = String.format("%02d", n); 			// ex) 두 자리 (한 자리 수일 경우 앞에 0)
String format4 = String.format("%0" + m + "d", n); 	// ex) m 자리

( 형식 문자열  ☞  https://hyunjiishailey.tistory.com/503  )

 

 

반응형