【问题标题】:Replace space digit " " to another将空格数字“”替换为另一个
【发布时间】:2015-02-16 09:39:52
【问题描述】:

我正在寻找有关将空格数字替换为另一个的解决方案,例如:

"My Example is interesting".replaceAll(" ", "1"); 

不返回"My1Example1is1interesting",而只返回"My"

我也在 StackOverflow 上寻找解决方案,但通常会发现“从字符串/URL 中删除空格..”等。

Scanner s = new Scanner(System.in);
String in = s.next();
in = in.replaceAll("//s+", "1");
System.out.println(in);

【问题讨论】:

  • 您的代码中还有其他问题,所以我建议您将其全部发布,以便我们查看发生了什么。当我运行"My Example is interesting".replaceAll(" ", "1"); 时,它绝对会返回"My1Example1is1interesting"
  • 如果您的操作与问题中提到的相同,那么它应该可以工作。String.replaceAll(" ","1");是正确的。
  • 偏差:你的例子并不有趣。
  • 你的帖子也远非有趣:)
  • 可能是 String in = s.next();此行导致问题。

标签: java string replace space


【解决方案1】:

实际问题是您读取数据的方式。 Scanner.next() 一次只读取一个单词。所以如果你打印读取的值,它实际上是"My"。使用nextLine() 读取整行。

打印in 并检查它打印的内容。它应该打印My,即只有一个单词而不是空格分隔的单词

【讨论】:

  • 这就是我需要的!非常感谢!不知道这可能对这种不当行为负责;)
  • @Rafcik - 作为一个经验法则,如果您不确定API。
  • 我只是为了测试写了这段代码,我通常不使用扫描仪,但是谢谢
【解决方案2】:

记住 String 对象在 Java 中是不可变的,你应该将结果分配给一个新的 String:

String res = "My Example is interesting".replaceAll(" ", "1");

另请注意,由于String#replaceAll 接受正则表达式作为第一个参数,您可以通过使用\\s+ 来改进正则表达式,这将适用于包含多个空格的字符串:

String res = "My   Example is     interesting".replaceAll("\\s+", "1");

更新:在您发布代码后,问题不在于replaceAll,您应该使用nextLine 而不是next,因为next 只读取第一个完整的令牌。

【讨论】:

  • @Rafcik 那么我们不知道问题出在哪里,也许您正在打印其他内容。发布您的完整代码。
  • @VasudevPathak 将next 替换为nextLine
【解决方案3】:

您必须将结果分配给另一个变量。

 String s = "My Example is interesting";
 String result = s.replaceAll(" ", "");

这将删除空格。

如果你想用另一个文本替换。

String result = s.replaceAll(" ", "My Text");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2012-05-15
    • 2014-01-25
    • 2017-01-04
    • 2019-12-09
    相关资源
    最近更新 更多