所以我正在尝试编写一个带有String(str)并将其转换为NATO Phonetic Alphabet(newSentence)的程序.
这是我试过的:
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 ");
然而,这显然不起作用,因为它用“Alpha”取代每个“a”后,它将取每个“l”“p”和“h”并重新转换那些等等.有没有办法一次转换所有字母,这样就不会发生这种情况,并使其更有效率?
解决方法:
迭代地创建一个新字符串:
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();
标签:java,replace,string
来源: https://codeday.me/bug/20190629/1324354.html