【问题标题】:How to remove front and end character of a string如何删除字符串的开头和结尾字符
【发布时间】:2021-07-21 13:39:54
【问题描述】:

对于这个输入:|PS D#W ||OOOP #||# || QQWQ|

我想通过修改下面的正则表达式来从字符串中删除第一个和最后一个管道,该正则表达式是我为任何空格和特殊字符删除而编写的。

str = str.replaceAll("[^a-zA-Z|]","");

我还想结合这个正则表达式 - str.replaceAll("\\|+","|")(用于将字符串之间的许多管道更新到一个管道)。是否可以将其组合到一个正则表达式中?

预期输出:PSDW|OOOP|QQWQ

【问题讨论】:

  • edit您的问题包含您想要从给定输入字符串中获得的所需输出/结果。

标签: java regex string


【解决方案1】:

我不会问你为什么要正则表达式删除第一个和最后一个管道(你可以检查字符串是否以管道开头和结尾并使用子字符串) 请记住,正则表达式比使用字符串更重。

但是...要删除第一个和最后一个,您可以使用

str.replaceAll("^\\|(.*)\\|$","$1")

解释here

然后是其他人。 当然,这取决于字符串的长度以及您使用此方法的频率 - 但对于所提出的问题,这是最短的答案。

【讨论】:

  • 好吧,你需要转义反斜杠。其次,您可以将替换内容重写为str.replaceAll("^\\||\\|$", "")
  • 当然正确 - 这是 JAVA :) 谢谢 - 我已编辑,如果我使用您的正则表达式,则匹配需要 65 个步骤,而我的需要 10 个步骤。如果您不关心性能,可以使用任何。
  • 你说得对,我忘记了使用交替 (|) 对正则表达式引擎来说是相当繁重的。
  • 谢谢,有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2013-01-12
  • 2011-11-02
  • 1970-01-01
  • 2014-05-04
相关资源
最近更新 更多