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);
}
}
}
现在我知道"替换"方法是错误的,因为我想改变特定的字符串"是"而不是其他字符串元素的一部分。我也试过使用SetChar方法,但我猜"字符串是不可变的"概念适用于此。 怎么去呢?
答案 0 :(得分:2)
使用String.replaceAll()
可以让您使用正则表达式。您可以使用预定义的character class \ W来捕获非单词字符:
System.out.println("This is not difficult".replaceAll("\\Wis", ""));
输出:
This not difficult
动词is
消失了,但is
的{{1}}消失了。
注1 :它还会删除非单词字符。如果你想保留它,可以在正则表达式中用一些括号捕获它,然后用This
重新引入它:
$1
输出:
System.out.println("This [is not difficult".replaceAll("(\\W)is", "$1"));
注意2 :如果你想处理一个以This [ not difficult
开头的字符串,这行不够,但很容易处理另一个正则表达式。
is
输出:
System.out.println("is not difficult".replaceAll("^is", ""));
答案 1 :(得分:0)
如果您使用replaceAll
,则可以使用\b
使用字边界来执行"whole words only" search。
见这个例子:
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);
}
输出结果为:
这太棒了 孤岛危机
岛
太棒了吗?
答案 2 :(得分:0)
更简单的方法:
String nay = bucky.replaceAll(" is ", " was ");
匹配字边界:
String nay = bucky.replaceAll("\\bis\\b", "was");
答案 3 :(得分:-2)
用另一个字符串替换字符串可以使用它 如果你的字符串变量包含这样的
bucky ="Android is my friend";
然后你可以这样做
bucky =bucky.replace("is","are");
你的Bucky的数据就像这个Android是我的朋友 希望这会对你有所帮助。