Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java替换()问题_Java_Replace - Fatal编程技术网

Java替换()问题

Java替换()问题,java,replace,Java,Replace,我应该输入一个字符串,并用&、2、U和4替换所有和、到、你和子字符串的 当我输入字符串“and,and,and,to,to,you,you,for,for,a,e,e,I,I,o,o,u,u”,它在打印时只输出和 public void simplify() { System.out.println("Enter a string to simplify: "); String rope = in.next(); System.out.println(simplifier

我应该输入一个字符串,并用
&
2
U
4
替换所有
你和
子字符串的

当我输入字符串“and,and,and,to,to,you,you,for,for,a,e,e,I,I,o,o,u,u”
,它在打印时只输出

public void simplify()
{
    System.out.println("Enter a string to simplify: ");
    String rope = in.next();
    System.out.println(simplifier(rope));
}
public String simplifier(String rope)
{

    rope = rope.replace(" and "," & ");
    rope = rope.replace(" and"," &");
    rope = rope.replace("and ","& ");
    rope = rope.replace(" to "," 2 ");
    rope = rope.replace(" to"," 2");
    rope = rope.replace("to ","2 ");
    rope = rope.replace(" you "," U ");
    rope = rope.replace("you ","U ");
    rope = rope.replace(" you"," U");
    rope = rope.replace(" for "," 4 ");
    rope = rope.replace("for ","4 ");
    rope = rope.replace(" for"," 4");
    rope = rope.replace("a ","");
    rope = rope.replace(" a","");
    rope = rope.replace("e ","");
    rope = rope.replace(" e","");
    rope = rope.replace("i ","");
    rope = rope.replace(" i","");
    rope = rope.replace(" o","");
    rope = rope.replace("o ","");
    rope = rope.replace("u ","");
    rope = rope.replace(" u","");
    System.out.print(rope);
    return rope;
}
输出:

它似乎切断了返回字符串后的第一个空格


我不知道发生了什么,也不知道为什么它没有发挥应有的作用。
我做错了什么?

替换第一个
rope=rope。替换(“and”,“&”)
绳索=绳索。替换(“和”、“&”)

现在应该可以了。问题是,您试图替换的第一个“和”是
,而不是
,这就是为什么它被保留而没有被替换的原因

还要删除简化器的最后一行,即系统输出打印(rope)。这是重复的,因为您已经在调用方法中打印了结果


更新: 我明白你在这里想做什么。试试这个:

对于每个要替换的单词,只替换一次。因此,对于
,请执行以下操作:

rope.replace("and", "&");
rope.replace("to", "2");
对于
,请执行以下操作:

rope.replace("and", "&");
rope.replace("to", "2");

不要在单词之间添加空格,这是不必要的。执行一次
replace()
将替换该单词的所有出现处。

以下是我如何简化代码并得到正确结果的:

    String rope = "and , and,and , to , to,to , you ,you , you, for ,for , for,a , a,e , e,i , i,o , o,u , u";

   // rope = rope.replaceAll(" ", "");
    rope = rope.replaceAll("and", "&");
    rope = rope.replaceAll("to", "2");
    rope = rope.replaceAll("you", "U");
    rope = rope.replaceAll("for", "4");
    rope = rope.replaceAll("a", "");
    rope = rope.replaceAll("e", "");
    rope = rope.replaceAll("i", "");
    rope = rope.replaceAll("o", "");
    rope = rope.replaceAll("u", "");
    System.out.println(rope);

“为什么它没有发挥应有的作用”。它应该输出什么?把字符串写在纸上。手动更换所有部件。你会看到
replaceAll
将第一个参数中的所有文本替换为第二个参数中的文本。请阅读以获取信息。您应该注意,您正在向方法传递一个参数,但在方法内部用另一个字符串覆盖它。这可能会引起您的混淆。您的方法(在关闭第一行中的字符串文字后)返回
&,&,&,&,&,2,2,U,U,U,U,4,4,,,,,,,,,,,,,
@James您必须提供使用此方法的代码,因为
Simplier()
返回的正是您所需要的,它似乎不起作用,当我输入
和asdfasdf
时,它仍然输出
我尝试了你的建议,但仍然不起作用。当返回方法遇到字符串中的空白时,它似乎停止了,因为当我输入
和hello
时,它返回
&
,当我输入`and hello
和`got returned谢谢你的帮助,这对我很有用。谢谢:)@James很高兴它有帮助:)请选择我的答案或投票,这样我可以更好地帮助别人