【问题标题】:Java regex pattern replacing space followed by special characterJava 正则表达式模式替换空格后跟特殊字符
【发布时间】:2017-01-20 12:47:05
【问题描述】:

我有以下 2 个字符串

1. Economy / Coach
2. First Class

我想要这样的正则表达式模式,

条件:

  1. 如果空格后跟特殊字符(/),我需要删除带有“”的空格。 (示例:经济舱/教练到经济舱/教练)
  2. 如果空格后面没有任何特殊字符,则字符串应保持原样。 (例如:头等舱到头等舱)

预期输出:

1. Economy/Coach
2. First class

谁能帮我写这个正则表达式模式? 提前致谢

【问题讨论】:

  • 特殊字符是指只有/(斜线) 还是有其他的(集合)?
  • 问题是“特殊字符”后面的空格也应该被删除。那么,. 也是一个特殊字符吗?
  • 谢谢。按预期工作

标签: java regex


【解决方案1】:

最好的方法是你使用String#replaceAll 方法,但是你必须将它显式地存储到变量中,因为字符串是不可变的。 replaceAll 方法会给你一个新的实例,不会影响原来的字符串。

例子:

String str = "Economy / Coach";
str = str.replaceAll("\\s+/\\s+", "/");

请注意,模式“\\s+”将捕获每个空格序列(表格、空格等)。

【讨论】:

    【解决方案2】:

    只需将出现的" / " 替换为"/"

    String replaced = string.replace(" / ", "/");
    

    请注意,这不使用正则表达式(直接;它在内部使用,但这只是一个实现细节)。

    【讨论】:

    • 虽然这不是一个动态的答案,如果它在两边都包含 2 个空格,那么它将不起作用。
    • @KunjanShah 这不是问题要问的:“如果 空格 后面跟着特殊字符......”。
    • 这种误解是为什么至少有一半的战斗是明确定义你想要完成的事情。例如:“对于每个存在的斜线,删除它两侧的任何空格”
    【解决方案3】:

    首先检查“/”是否在字符串中。 如果是这样,则删除 WhiteSpaces。

       if(testString.contains("/")){
            str1 = testString.replaceAll("\\s+","");
        }
    

    【讨论】:

    • 这将替换字符串中的所有个空格,无论它们在哪里。
    • ...这将导致1.Economy/Coach - 我想这不是我们想要的
    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多