2013-11-20 2 views
4

그래서 String (str)을 가져 와서 NATO Phonetic Alphabet (newSentence)로 변환하는 프로그램을 작성하려고합니다. Java - 한 번에 많은 문자열 바꾸기

내가 뭘하려 :

newSentence = str.toLowerCase().replace("a", "Alpha ") 
           .replace("b", "Bravo ") 
           .replace("c", "Charlie ") 
           .replace("d", "Delta ") 
           .replace("e", "Echo ") 
           .replace("f", "Foxtrot ") 
           .replace("g", "Golf ") 
           .replace("h", "Hotel ") 
           .replace("i", "India ") 
           .replace("j", "Juliet ") 
           .replace("k", "Kilo ") 
           .replace("l", "Lima ") 
           .replace("m", "Mike ") 
           .replace("n", "November ") 
           .replace("o", "Oscar ") 
           .replace("p", "Papa ") 
           .replace("q", "Quebec ") 
           .replace("r", "Romeo ") 
           .replace("s", "Sierra ") 
           .replace("t", "Tango ") 
           .replace("u", "Uniform ") 
           .replace("v", "Victor ") 
           .replace("w", "Whiskey ") 
           .replace("x", "X-Ray ") 
           .replace("y", "Yankee ") 
           .replace("z", "Zulu "); 

그러나,이 분명히 그것이 바꾸는 후부터 작동하지 않는 모든 "A"와 "알파"는 모든 "L", "P"를 할게요 및 "h"하고 다시 변환합니다. 한 번에 모든 글자를 변환하여 어떤 일도 일어나지 않도록하고, 훨씬 더 효율적으로 만들 수있는 방법이 있습니까?

+1

'replace'를 여러 번 호출하는 대신 각 문자를 반복하고 입력 문자열을 기반으로 완전히 ** 새 ** 문자열을 만들 수 있습니다. –

+0

http://stackoverflow.com/q/7658568/1725096 –

답변

2

반복적 새로운 문자열을 작성

StringBuilder outSB = new StringBuilder(); 
for(int i=0; i < str.length(); i++){ 
    if(str.charAt(i) == 'a' || str.charAt(i) == 'A') outSB.append("Alpha "); 
    if(str.charAt(i) == 'b' || str.charAt(i) == 'B') outSB.append("Bravo "); 
    // and so on 
} 
String output = outSB.toString(); 
+0

'char't에'i'를 전달하지 않겠습니까? –

+0

예, str.charAt (i) – mdolbin

+0

@SamIam 제 견해가 수정되었습니다. – hexafraction

0
StringBuilder sb = new StringBuilder(); 
for (char c : str.toLowerCase().toCharArray()) { 
    switch (c) { 
     case 'a': 
      sb.append("Alpha "); 
      break; 
     case 'b': 
      sb.append("Bravo "); 
      break; 
     // and so on until Zulu... 
     default: 
      // optional: just pass through any character not in NATO alphabet 
      sb.append(c); 
      break; 
    } 
} 
1
private static Map<Character, String> lookup = new HashMap<>(); 
public static void main(String[] args) { 
    String input = "abc"; 
    StringBuilder sb = new StringBuilder(); 

    for(char c : input.toCharArray()){ 
     sb.append(lookup.get(c)); 
     sb.append(" "); 
    } 

    System.out.println(sb.toString()); 

} 

static { 
    lookup.put('a', "Alpha"); 
    lookup.put('b', "Bravo"); 
    lookup.put('c', "Charlie"); 
} 

출력 :

알파 브라보 찰리

룩업 테이블을 만들고 기초하여 새로운 스트링을 구축 각 chara에 원래의 끈에 넣으십시오.

관련 문제