2014-07-08 3 views
-3

나는 Apple과 Lenovo라는 단어의 모음을 모두 바꾸려고했습니다. 출력과 같은 것. %20ppl%20, L%20n%20v%20 여기Java - 문자열 배열을 다른 문자열 배열로 바꾸기

String[] dalek = new String[]{"Apple","Lenovo"}; 
String[] wy = new String[]{"a","e","i","o","u"}; 

for (int i = 0 ; i < dalek.length; i++) 
String wyx = wy[i]; 

dalek[i] = dalek[i].replace(wyx,"%20"); 

System.out.println(Arrays.toString(dalek)); 
+1

작동 그리고 문제는 무엇인가? – Thomas

+0

for 루프에서 parantheses가 빠져있는 것처럼 보입니다. – aniri

+4

더 간단한 'dalek [i] = dalek [i] .replaceAll ("[aeiou]", "% 20"); – Thomas

답변

5

루프가 더 중괄호가없는 내 코드입니다.

이것은 단지 String wyx = wy[i];이 루프로 실행된다는 것을 의미하며 나머지는 실행되지 않습니다. 이 일을해야

String[] dalek = new String[]{"Apple","Lenovo"}; 
String[] replaced = new String[dalek.length]; 
for (int i = 0; i < dalek.length; i++) { 
    // assigning repalced[i] 
    //   | with dalek at index i 
    //   |      | case insensitive  
    //   |      | | vowels class (add "y" if necessary) 
    //   |      | |   | with URL-encoded space 
    replaced[i] = dalek[i].replaceAll("(?i)[aeiou]", "%20"); 
} 
System.out.println(Arrays.toString(replaced)); 

출력

[%20ppl%20, L%20n%20v%20] 
+0

별로 우아하지 않습니다. 'dalek [i ++]'는 별도의 변수로 선언되어야합니다. 그렇지 않으면 읽기 쉽지 않은 또 다른 단점입니다. 또한 iterator가 필요할 때'for (int i; ...) '가 더 우아 할 것이다. 외부 영역에'i'가 있다고 선언하는 것은 그리 좋지 않다. – Sulthan

+2

@Sulthan 옙 내가 이미 편집하는 동안 너는 나를 붙 잡았다. 나는 습관에 의한 빠른 열거로 갔다.이 경우에는 보통 for 루프가 더 적합하다. – Mena

0

:

String[] dalek = new String[]{"Apple","Lenovo"}; 
String[] wy = new String[]{"a","e","i","o","u"}; 

for (int i = 0 ; i < dalek.length; i++) { 
    for (int j=0; j<wy.length;j++){ 
     String wyx = wy[j]; 
     dalek[i] = dalek[i].toLowerCase().replace(wyx,"%20"); 
    } 
} 

System.out.println(Arrays.toString(dalek)); 
0

도움이 될 수 있습니다 여기에

은 더 우아한 해결책이다
0
String[] dalek = new String[]{"Apple","Lenovo"}; 
    String[] wy = new String[]{"a","e","i","o","u"}; 

    for (int i = 0 ; i < dalek.length; i++) 
    { 
     for(int j=0;j<wy.length;j++) 
     { 
      dalek[i] = dalek[i].replaceAll("(?i)"+wy[j], "%20"); 
     } 
    } 

    System.out.println(Arrays.toString(dalek)); 

+0

예상대로 출력합니다. – user2629427

관련 문제