【问题标题】:How to replace substrings that contain any integer in java?如何替换Java中包含任何整数的子字符串?
【发布时间】:2014-12-29 22:10:23
【问题描述】:

如何在 java 中替换格式为“:[number]:”的子字符串

示例:

string="Hello:6:World"

更换后,

HelloWorld

【问题讨论】:

  • :\\d+: 有什么问题?
  • 如果你确定最后一个字符是':',首先删除最后一个字符,然后简单地使用split()方法
  • 我想要一个正则表达式。 @Reyjohn
  • 提供您的预期输出
  • @KhaledSaif 这就是我 18 分钟前所说的。

标签: java regex substring


【解决方案1】:

这样做

String s = ":6:";     
s = s.replaceAll(":", "");

【讨论】:

    【解决方案2】:
    ss="hello:909:world"; 
    

    如下:

    String value = ss.replaceAll("[:]*[0-9]*[:]*","");
    

    【讨论】:

    • 只需:\\d*: 就足够了。
    • * 代表 0 个或多个字符,如果您想确保至少有一个字符,则使用 + 代替 *
    • 这个正则表达式不正确。它取代了单一的 : 和没有被 : 包围的数字。它也会使“Hello 5 World”成为“Hello World”。所以这就是QE想要的???
    • + 意味着必须至少有一个 : 后跟至少一个数字,后跟至少一个 :
    • 字符串值 = ss.replaceAll(":[0-9]+:","");会按照其他评论员所说的去做。
    【解决方案3】:

    您可以使用正则表达式来定义您想要的模式

    String pattern = "(:\d+:)";
    string EXAMPLE_TEST = ':12:'
    System.out.println(EXAMPLE_TEST.replaceAll(pattern, "text to replace with"));
    

    应该取决于您要替换的确切内容...

    【讨论】:

    • 你检查你的模式了吗?
    【解决方案4】:

    编辑1:问题改变后,应该使用

    :\d+:
    

    在 Java 中

    :\\d+:
    

    这也是替换 :: 的答案。

    这是你应该使用的正则表达式:

    :\d*:
    

    Debuggex Demo

    这是一个正在运行的 JavaCode 被截断:

    String str = "Hello :4: World";
    String s = str.replaceAll(":\\d*:","");
    System.out.println(s);
    

    replaceAll 的一个问题通常是,正确的字符串被返回。调用 replaceAll 的字符串对象未被修改。

    【讨论】:

    • 因为* 也匹配零次重复,尽管这也将匹配::,您可能应该使用:\d+:(一个或多个重复),具体取决于所需的行为。
    • 奇怪。问题已编辑。在这句话之前:“我也想替换 ::。因此我使用了 *.
    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2016-10-30
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2021-11-22
    相关资源
    最近更新 更多