230321 데일리코딩

허크·2023년 3월 21일
0

앞글자를 대문자로

1. split()

String result = new String();
// 빈 문자열 처리
if (str.length() == 0) {
   result = "";
}
// 단어를 공백으로 구분한 배열 생성
String[] words = str.split(" ");
// 배열순회하면서 '앞글자 대문자 + 나머지 글자'로
for (int i = 0; i < words.length; i++) {
    words[i] = String.valueOf(words[i].charAt(0)).toUpperCase() + words[i].substring(1);
}
// 배열을 문자열로 합치기
result = String.join(" ", words);
System.out.println(result);

2. StringBuilder

StringBuilder sb = new StringBuilder();
String result = new String();
// edgecase 처리
if (str.trim().isEmpty()) {
	return "";
}
// capitalize를 true로 설정
boolean capitalize = true;
// str의 글자별로 순회
for (char c : str.toCharArray()) {
	// 공백이 있을 경우 capitalize를 true로 설정
    if (Character.isWhitespace(c)) {
        capitalize = true;
    // 해당문자가 공백이 아니면서 true 인경우
    // 대문자화 하고 capitalize를 false로 설정
    } else if (capitalize) {
              c = Character.toUpperCase(c);
              capitalize = false;
    }
    // 해당 문자를 stringbuilder에 입력
    sb.append(c);
}
// result에 stringbuilder를 문자열로 입력
result = sb.toString();
System.out.println(result);
  • 위 경우 공백으로만 이루어진 문자열의 처리가 불가능 하므로 edgecase로 처리해줌
    -trim() 메서드를 사용해 앞뒤의 공백을 제거할 수 있음

3. ArrayList

List<String> wordList = new ArrayList<>();
String result = new String();
// edgecase 처리
if (str.length() == 0 || str.trim().isEmpty()) {
	return "";
}
// 문자열의 문자를 ArrayList에 추가
for (int i = 0; i < str.length(); i++) {
	wordList.add(String.valueOf(str.charAt(i)));
}
// 첫 문자를 대문자로
wordList.set(0, wordList.get(0).toUpperCase());
// ArrayList를 순회하면서 다음 문자 대문자로
for (int i = 1; i < wordList.size(); i++) {
	if (wordList.get(i - 1).equals(" ")) {
		wordList.set(i, wordList.get(i).toUpperCase());
	}
}
// 문자열 합치기
for (String word : wordList) {
	result += word;
}		
System.out.println(result);
  • 위 경우 빈 문자열이나 공백으로만 이루어진 문자열의 처리가 불가능하므로 edgecase로 처리함
profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글