Java-我想用另一个

时间:2015-07-10 09:31:37

标签: java

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方法,但我猜"字符串是不可变的"概念适用于此。 怎么去呢?

4 个答案:

答案 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是我的朋友 希望这会对你有所帮助。