2011-03-26 107 views
0
import java.util.*; 
public class ReplaceString { 
    public static void main(String[] args) { 
     new ReplaceString().run(); 
    } 

    public void run() 
    { 

     System.out.println("Input String:\n"); 
     Scanner keyboardScanner = new Scanner(System.in); 
     String inString = keyboardScanner.nextLine(); 
     String strOutput = inString.replace("is","was"); 
     System.out.println(strOutput);  

    } 
} 

我想從輸入的行中取代所有「is」與「was」的出現,這是我能夠做到的,但我不想混淆「is」是這個詞的一部分。替換字符串java掃描儀類

例如,任何出現的單詞nameis或這應該被忽略。只有對個別出現次數「是」應爲「是」

代替我知道我可以使用正則表達式,但我不知道該格式,如果是正則表達式

回答

5

嘗試

String strOutput = inString.replaceAll("\\bis\\b","was"); 

reference link

測試輸出:

Input String: 

is island is feris kiss 

輸出

was island was feris kiss 
+1

如果什麼'is'發生在輸入的開始?怎麼樣輸入「島」? – 2011-03-26 20:13:36

+0

@Mark對於你提到的測試用例似乎沒什麼問題。 – 2011-03-26 20:16:13

+0

當我評論時,尾部'\\ b'不在那裏,現在我同意,+1 – 2011-03-26 20:17:11

0

不是我對java很熟悉,但可以嘗試添加空格。理論上這應該起作用。

System.out.println("Input String:\n"); 
Scanner keyboardScanner = new Scanner(System.in); 
String inString = keyboardScanner.nextLine(); 
String strOutput = inString.replace(" is "," was "); 
System.out.println(strOutput); 

+0

如果'is'出現在開始處或輸入結束? – 2011-03-26 20:16:20

+0

我在發佈問題之前已經嘗試過,但如果第一次出現的句子是「是」,並且之前沒有空格,該怎麼辦?在這種情況下,第一次發生3不會被取代,因爲它不符合「是」 – user665319 2011-03-26 20:39:33