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