2017-12-15 4 views
1

문자열의 대문자를 대문자로 만들고 싶습니다. 여기에 대한 방법입니다 :문자열 내에서 대문자로 문자 만들기

public static String LetterChanges(String str) { 

     char[] strChar = str.toCharArray(); 

     for (int i =0; i < str.length(); i++){ 
      char ch = str.charAt(i); 

      if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){ 
       Character.toUpperCase(ch); 
       str.replace(strChar[i], ch); 
      } 
     } 
    return str; 
} 

그 문이 모음을 선택할 것입니다,하지만 난 그게 대문자로 만드는 방법을 알아낼 수 없습니다 "만일". IntelliJ는 .toUpperCase 및 .replace의 결과는 모두 무시됩니다. 누군가가 그 방법이 무시되는 이유를 설명해 주시겠습니까? 그리고 아마도이 코드를 올바른 방향으로 가르쳐 주시겠습니까?

답변

1

IntelliJ는 문자열과 문자가 Java에서 불변이므로 이러한 연산의 결과는 무시됩니다. 그들에 수행되는 동작의 결과는 예컨대 : 실제 프로그램으로서

ch = Character.toUpperCase(ch); 
str = str.replace(strChar[i], ch); 

, 그것은 모음 배열 반복 할 것으로 충분 다시 변수에 할당하고 모든 모음을 위해 String.replace(char old, char new) 사용되어야한다. 이 연산은 문자열에있는 해당 모음의 모든 항목을 바꿉니다.

String string = "Whatever string"; 
char[] vowels = new char[]{'a', 'e', 'i', 'o', 'u'}; 

for (char vowel : vowels) { 
    string = string.replace(vowel, Character.toUpperCase(vowel)); 
} 

System.out.println(string); // WhAtEvEr strIng 
+1

와우, 나는 그것이 모두 필요하다는 것을 믿을 수 없다. 이제 알 겠어. 현악기와 숯불들은 기본적으로 불변의 이유로 특별한 대우가 필요하다. 실제로 실제로 훨씬 더 의미가 있습니다. 고마워요, 로비! –

-1

코드는 입력으로 사용 된 원래 문자열을 업데이트하지 않습니다. 메서드를 대체하여 문자열을 수정하고 입력에 다시 지정하지 않는 문자열을 반환합니다. Character.toUppercase(); 메서드는 대체해야하는 문자를 반환합니다.

public static void main(String[] args) { 
    String str = "This is my input string"; 
    char[] strChar = str.toCharArray(); 
    for (int i = 0; i < str.length(); i++) { 
     char ch = str.charAt(i); 
     if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { 
      str = str.replace(strChar[i], Character.toUpperCase(ch)); 
     } 
    } 
    System.out.println(str); 
} 

위 작업을 수행하는 간단한 방법입니다.

public static void main(String[] args) { 
     String input = "This is my input string"; 
     System.out.println(input.replace("a", "A").replace("e", "E").replace("i", "I").replace("o", "O").replace("u", "U")); 
} 
+0

내 대답이 왜 내려 갔는지 알 수 있습니까? – Abhishek

관련 문제