【问题标题】:Removing Specified Characters From A String [duplicate]从字符串中删除指定字符[重复]
【发布时间】:2016-02-24 17:13:56
【问题描述】:

我有兴趣使用String.replaceAll 函数,该函数将允许我删除字符串的特定序列。

  1. String.replaceAll 的功能是否替换了第一次出现的字符串序列,以及替换?我的假设是肯定的。

  2. 要替换特定的子字符串,我将如何替换提供的字符串中的字符?

    String sentence = "@red@@blue@@green@Hello@reset@";
    

    我要删除的子字符串是从@ 到另一个@,在这种情况下,同时运行String.replace

    String.replaceAll("@**PATTERN HERE SO NAME WON"T MATTER**@", "");
    

编辑 看到 replace 和 replaceAll 使得这两个区别之间存在,是一个使用正则表达式的区别。 我担心的是删除第一次出现的给定表达式,即

的原始字符串
String sentence = "@red@@blue@@green@Hello@reset@";

必须运行 4 次才能将“Hello”作为字符串的剩余成员。

示例: 运行 1 - replaceFirstOccurence("@regex@", "");

System.out.println(sentence); --> "@blue@@green@Hello@reset@"

运行 2 - replaceFirstOccurence("@regex@", "");

System.out.println(sentence); --> "@green@Hello@reset@"

运行 3 - replaceFirstOccurence("@regex@", "");

System.out.println(sentence); --> "Hello@reset@"

运行 4 - replaceFirstOccurence("@regex@", "");

System.out.println(sentence); --> "Hello"

【问题讨论】:

  • 请添加示例。人们对你到底想要什么感到困惑。
  • @ErickG.Hagstrom 我添加了一个示例
  • @nolexa 请再次仔细查看字符串,每种颜色都由@color@ 控制。彼此相邻的颜色看起来像@color@@color@,因此 Hello 确实是最后一个
  • 我相信他希望删除 @ 及其后面的 @ 之间的所有内容,因此在他的测试字符串 @red@@blue@@green@Hello@reset@ 中,只保留 Hello
  • @KyleJ 您的示例字符串是“@red@@blue@green@Hello@reset@”,而不是“@red@@blue@@green@Hello@reset@”。你看得到差别吗? “绿色”周围的标记不平衡。请注意。你的例子令人困惑。

标签: java string


【解决方案1】:

使用String的标准方法replaceAll(String regularExpression, String replacement)

例如: "@some chars@".replaceAll("@[^@]*@", "@@");

【讨论】:

  • 但是替换 - 不支持正则表达式。
  • 我还需要@any length/character@ 表达式的模式,在这个主题上不太好。
  • 我想他也想去掉@符号,所以第二个参数应该是""
  • @waxtah 我在页面上添加了一个编辑,看看底部。基本上总结了我的要求,因为 replaceAll 会核对每次出现的整个字符串,而不是单独删除它。
【解决方案2】:

好吧,回答这个问题实际上非常简单,但正则表达式是最难的部分。

感谢@waxtah 的正则表达式回答了这个问题。

使用 String.replaceFirst("@[^@]*@", "");

我能够实现我的目标。感谢这里的每一个人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多