문제
https://programmers.co.kr/learn/courses/30/lessons/12930
참고
1. 문자열 나누기
1-1. java.lang.String.split() ( 출처 : elmkm.tistory.com/20 ) vs. StringTokenizer, substring()
- public String[] split(String regex);
regex를 기준으로 문자열을 구분해서 배열로 출력 구분된 문자열의 길이가 0이면 빈 공백 반환
String str = "My;;name;is;DS";
String regex = ";";
int limit = 0;
String[] words = str.split(regex);
for (String word : words){
System.out.println(word);
}
//My
//
//name
//is
//DS
- public String[] split(String regex, int limit);
- regex : 문자열을 구분하기 위한 정규 표현. 문자열 구분의 기준.
- limit : 분류할 문자열의 수.
- limit == 0
구분된 문자열의 길이가 0인 것은 무시된다.
String str = "My;;name;is;DS;;;;";
String regex = ";";
int limit = 0;
String[] words = str.split(regex, limit);
for (String word : words){
System.out.println(word);
}
//My
//
//name
//is
//DS
- limit > 0
배열의 최대 개수는 limit를 넘지 못한다.
구분된 문자열의 길이가 0인 것도 포함한다.
ex. 분류할 단어가 10개일 때, limit가 5 이상이면 5개만 구분하고 나머지는 통째로 출력
String str = "My;;;name;is;DS;;;;";
String regex = ";";
int limit = 3;
String[] words = str.split(regex, limit);
for (String word : words){
System.out.println(word);
}
//My
//
//;name;is;DS;;;;
- limit < 0
구분된 문자열의 길이가 0인 것도 포함한다.
- Throws : PatternSyntaxException(정규표현식의 패턴이 유효하지 않을 때 발생)
1-2. java.util.StringTokenizer
- 3가지 메소드
- int countTokens()
마지막으로 토큰을 읽어오기 전 남아있는 토큰의 수
- boolean hasMoreTokens()
토큰이 남아있으면 true, 없으면 false return
- String nextToken()
토큰 읽어오기
- 빈칸인 것은 포함하지 않는다.
String str = "Hello,,my,address,is,xxx@gmail.com";
StringTokenizer tokens = new StringTokenizer(str, ",");
//방법 1
while(tokens.hasMoreElements()){
System.out.println(tokens.nextToken());
}
//방법 2
int cnt = tokens.countTokens();
for(int i=0; i<cnt; i++){
System.out.println(tokens.nextToken());
}
//Hello
//my
//address
//is
//xxx@gmail.com
// 두 개 이상의 구분 문자열
StringTokenizer tokens = new StringTokenizer(str, ",@.");
while(tokens.hasMoreElements()){
System.out.println(tokens.nextToken());
}
//Hello
//my
//address
//is
//xxx
//gmail
//com
// 두 개 이상의 구분 문자열 (false)
StringTokenizer tokens = new StringTokenizer(str, ",@.", false);
while(tokens.hasMoreElements()){
System.out.println(tokens.nextToken());
}
//Hello
//my
//address
//is
//xxx
//gmail
//com
// 두 개 이상의 구분 문자열 (true : regex까지 출력)
StringTokenizer tokens = new StringTokenizer(str, ",@.", true);
while(tokens.hasMoreElements()){
System.out.println(tokens.nextToken());
}
//Hello
//,
//,
//my
//,
//address
//,
//is
//,
//xxx
//@
//gmail
//.
//com
1-3. java.lang.String.substring()
- public String substring(start);
문자열의 start 위치부터 끝까지 문자열 자르기
- public String substring(start, end);
문자열의 start 위치부터 end 전까지 문자열 발췌
split() | StringTokenizer | substring() |
- String 클래스의 메소드 - 추출한 문자열을 String[] 배열로 저장 - 빈 값 처리 가능 |
- java.util에 포함된 클래스 - 빈값은 무시하고 처리 |
- String 클래스의 메소드 - 문자열이 아닌 index 기준으로 문자열 자르기 |
2. java.lang.String.trim()
- public String trim();
- 문자열 앞 뒤 공백 제거
코드
import java.lang.*;
class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split("\\s",-1);
for(int i=0;i<arr.length; i++){
for(int j=0; j<arr[i].length();j++){
if(j%2==0)
answer += Character.toString(Character.toUpperCase(arr[i].charAt(j)));
else
answer += Character.toString(Character.toLowerCase(arr[i].charAt(j)));
}
answer+=" ";
}
return answer.substring(0, answer.length()-1);
}
}
'Preparing Coding Test > Programmers L1' 카테고리의 다른 글
[Java] 자연수 뒤집어 배열로 만들기 (0) | 2020.07.27 |
---|---|
[Java] 자릿수 더하기 (0) | 2020.07.27 |
[Java] 문자열을 정수로 바꾸기 (0) | 2020.07.22 |
[Java] 약수의 합 (0) | 2020.07.22 |
[Java] 수박수박수박수박수박수? (0) | 2020.07.21 |