[英]Java Using the Replace Method repeatedly
我必須用Java編寫一個程序,通過切換字母“ e”和“ o”來替換“ Hello,World”中的字母,這樣程序的輸出將為“ Holle,Werld”。 我嘗試使用以下代碼執行此操作,但是已經意識到所有的o都是e,而e仍然是e。 我知道e正在覆蓋o,但我只是不知道如何解決。 我當前的輸出是“ Helle Werld”,再次,我要“ Holle,Werld”,謝謝!
import java.util.Scanner;
public class E2U7
{
public static void main(String[] args)
{
String river = "Hello, World";
river = river.replace("e","o");
river = river.replace("o","e");
System.out.print(river);
}
}
您可以在字符串中逐個字符地進行字符轉換:
public class JavaTestiMain {
public static void main(String[] args)
{
String river = "Hello, World";
StringBuilder sb=new StringBuilder();
for (char c : river.toCharArray()){
if(c == 'e'){
sb.append('o');
}
else if (c=='o'){
sb.append('e');
}
else{
sb.append(c);
}
}
System.out.println(sb.toString());
}
}
因為您是一個入門者,所以(希望)可以理解的解釋是:基本上,您從第一個符號開始循環遍歷給定的String。 如果它是e,則將a添加到您的臨時解決方案中;如果它是o,則添加一個e;如果它是另一個字符,則添加它。 最后,從您的StringBuilder獲取最終的String。 在這種情況下,您無需將e更改為o的螞蟻,而后將所有更改為e的螞蟻。
其他答案的優點是,如果中間符號位於起始字符串中,則不會引起問題。
使用中間符號
import java.util.Scanner;
public class E2U7
{
public static void main(String[] args)
{
String river = "Hello, World";
river = river.replace("e","x");
river = river.replace("o","e");
river = river.replace("x","o");
System.out.print(river);
}
}
編輯1:如評論中所述,這是一種解決方案,但不是最佳解決方案,因為它依賴於輸入字符串中可能出現的中間字符。 因為已經發布了更好的方法,所以我不會更新我的答案(請參閱@ThomasBöhm的答案)。
這是您要完成的工作的流版本:
String result = Arrays.stream(river.split(""))
.map(c -> c.equals("e")? "o" : c.equals("o")? "e" : c)
.collect(Collectors.joining());
您可以嘗試這樣的事情:
river = river.replace("e","_");
river = river.replace("o","e");
river = river.replace("_","o");
使用不在輸入字符串上的臨時字符!
您可以在主要方法中替換此代碼,它將起作用
String river = "Hello, World";
String str = river;
river = river.replaceAll("e","*");//o
river = river.replaceAll("o","#");//e
river = river.replaceAll("\\*","o").replaceAll("#","e");
System.out.print(river);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.