너와 나의 프로그래밍

JAVA - 문자열 본문

Back-End/Java Example

JAVA - 문자열

Whatever App's 2018. 5. 23. 21:42

 

 

[JAVA] 문자열

 

 

 

1. 문자열을 연결하는 경우!

 

 

※ StringBuilder는 스레드 동기화 처리가 되지 않는 대신 StringBuffer보다 고속으로 동작한다. 여러 스레드가 조작될 경우 StringBuffer를 사용한다.

 

● "+" 연산자로 연결하는 경우 = String str = "안녕" + "하세요"

 

● StringBuilder나 StringBuffer를 사용하는 경우

 

StringBuilder sb = new StringBuilder();

sb.append("Hello"); // append 메소드로 연결할 수 있다.

sb.append("World");

String str = sb.toString(); // //toString 메소드로 String 객체로 변환할 수 있다.

 

● Join 메소드를 사용하는 경우

 

String str1 = String.join("-", "안녕","하세요"); // 가변 길이를 인수로 지정해 문자열을 연결

    

List<String> list = Arrays.asList("Java", "8", "is", "great!");

String str2 = String.join(" ", list); // List로 저장된 문자열을 연결

 

 

2. 문자열을 길이를 구하는 경우!

 
 Java에서는 문자열을 "Unicode"로 다루기 때문에 한국어 같은 멀티 바이트 문자열도 1문자로 계산된다.
 
● 문자열의 길이를 구하는 경우
 

String str = "Hello World"

int str_length = str.length() // length 메소드로 길이를 조사

 

 

● 문자열의 바이트 길이를 구하는 경우

 

String str = "Hellow World"

int euckrLength = str.getBytes("EUC-KR").length 

// getBytes 메소드로 바이트 배열로 변환하고 length 메소드로 길이를 구한다.

 

 

 

3. 문자열의 일부를 구하거나 문자열을 나누기!

 

● substring(int beginIndex, int endIndex)

 

String str = "Hellow World"

String result1 = str.substring(0) // 1번째 매개변수만 지정한 경우에는 지정한 인덱스부터 쭉~ 반환!

String result2 = str.substring(1, 2) 

// 2번째 매개변수 까지 지정한 경우에는 첫번째 지정한 인덱스부터 마지막 지정한 인덱스 까지를 반환~

 

● split(String regex, int limit)

 

String str = "A,B,C,"

String[] result = str.split(",", 4) 

// 보통은 배열의 끝에 빈 문자열은 포함되지 않지만, 최대 요소 수를 지정한 경우에는 끝의 요소가 빈 문자열인 경우에도 분할 후 배열에 포함.

 

 

4. 문자열을 비교하기!

 

● equals(Object anObject), equalsIgnoreCase(String anotherString)

 

String str = "Hello Java"

boolean = str.equals("Hello Java") // 문자열과 비교했을 때 같으면 "true" 다르면 "false" 값을 반환.

boolean = str.equalsIgnoreCase("Hello Java") // 대소문자의 구분 없이 같으면 "true" 다르면 "false" 값을 반환

 
 

5. 문자열 바꾸기!

 

● replace(char oldChar, char new Char)

 

String str = "Hello Java"

String result = str.replace("Hello", "Hi") // 앞은 이전 문자열, 뒤는 바꾸고 싶은 문자열

 

5. 특정 문자열의 시작과 끝을 알아보자!

 

● startsWith(String prefix), endsWith(String suffix)

 

String str = "Hello Java"

String start = str.startsWith("Hello") // 문자열이 "Hello"로 시작하면 "true" 다르면 "false"

String end  = str.endWith("Java") // 문자열이 "Java"로 끝나면 "true" 다르면 "false"

 

6. 특정 문자열의 포함 여부를 알아보자!

 

● indexOf(int ch, [int fromIndex]), lastIndexOf(int ch, [int fromIndex])

 

String str = "Hello Java"

int indexOf1 = str.indexOf("Hello") // 앞부분부터 문자열을 검색하면서 처음에 찾은 문자열의 인덱스를 반환

int indexOf2 = str.indexOf("Java", 5) // 2번째 인수를 지정하는 경우 지정한 인덱스 부터 문자열을 검색

int indexOf3 = str.indexOf("Hi") // 문자열에 포함되어 있지 않은 경우 "-1" 포함된 경우 "0"을 반환(int 형)

int lastIndexOf1 = str.lastIndexOf("Hello") // 문자를 뒤에서 부터 검색

 

 

7. 대문자와 소문자를 변환하기!

 

● toUpperCase(), toLowerCase()

 

String str = "Hello Java"

String Upper = str.toUpperCase() // 문자열을 전부 대문자로 변환

String Lower = str.toLowerCase() // 문자열을 전부 소문자로 변환

 

 

8. 문자열 앞 뒤 공백, 탭, 개행을 삭제하기!

 

● trim()

 

String str = "   Hello Java   "

String result = str.trim() // 앞 뒤의 공백은 삭제 되지만 문자열 내의 공백은 삭제되지 않는다.

 

 

9. 문자열에 형식화(변수값 넣기)!

 

● format(String format, Object... args)

 

String str = "String"

String result = String.format("문자열 서식 : %s", str)

// format에 지정할 수 있는 서식은 구글에서 찾아보자... 서식 앞에 "%"를 붙여 사용한다.

 

Date now = new Date()

String date = String.format("%tY년 %<td일 %<tM분 %<tS초", now)

// "%<"를 사용하면 상대 인덱스를 지정하고 직전의 인수를 지정할 수 있다.

 

 

10. 문자 코드를 변경하기!

 

 

● getBytes(Charset charset), Charset, StandardCharsets(java7 이상)

 

byte[] bytes = "Hello Java".getBytes("UTF-8")

// 문자 코드를 변환하지 않고 바이트 배열을 구함

 

Charset cs = Charset.forName("UTF-8")

byte[] bytes = "Hello Java".getBytes(cs);

// 문자 코드를 지정하고 바이트 배열을 구함

 

byte[] bytes = "Hello Java".getBytes(StandardCharsets.UTF_8);

// Java 7 이후 버전만 가능. 지정할 수 있는 문자코드가 한정되어 있음(이것도 구글에서...)

 

 

 

 

 

 

 

 

참고 : 예제가 가득한 JAVA

 

반응형