import java.util.*;
import java.io.*;
public class OptimusPrime{
public static void main(String[] args){
System.out.println("Please enter the sentence");
Scanner scan= new Scanner(System.in);
String bucky=scan.nextLine();
int pOs=bucky.indexOf("is");
System.out.println(pOs);
if(pOs==-1){
System.out.println("the statement is invalid for the question");
}
else{
String nay=bucky.replace("is", "was");
System.out.println(nay);
}
}
}
现在我知道"replace"方法是错误的,因为我想改变特定的字符串"is",而不是其他字符串元素的部分。我也尝试使用SetChar方法,但我想"字符串是不可变的"概念适用于这里。怎么做呢?
使用String.replaceAll()
可以使用正则表达式。您可以使用预定义的字符类W来捕获非单词字符:
System.out.println("This is not difficult".replaceAll("\Wis", ""));
输出:
This not difficult
动词is
从This
中消失,而is
没有消失。
注1:它还删除非单词字符。如果您想保留它,可以在正则表达式中使用括号捕获它,然后使用$1
:
System.out.println("This [is not difficult".replaceAll("(\W)is", "$1"));
输出:
This [ not difficult
注2:如果你想处理一个以is
开头的字符串,这一行是不够的,但是用另一个正则表达式处理它是很容易的。
System.out.println("is not difficult".replaceAll("^is", ""));
输出:
not difficult
如果您使用replaceAll
代替,那么您可以使用b
使用词边界来执行"仅整词"搜索。
请看下面的例子:
public static void main(final String... args) {
System.out.println(replace("this is great", "is", "was"));
System.out.println(replace("crysis", "is", "was"));
System.out.println(replace("island", "is", "was"));
System.out.println(replace("is it great?", "is", "was"));
}
private static String replace(final String source, final String replace, final String with) {
return source.replaceAll("\b" + replace + "\b", with);
}
输出为:
这是伟大的
《孤岛危机》
岛
很棒吗?
更简单的方法:
String nay = bucky.replaceAll(" is ", " was ");
匹配字边界:
String nay = bucky.replaceAll("\bis\b", "was");
用另一个字符串替换字符串你可以使用这个如果你的字符串变量包含如下
bucky ="Android is my friend";
然后你可以这样做
bucky =bucky.replace("is","are");
和你的bucky的数据会像这样Android是我的朋友