【问题标题】:One expression to ignore special symbols, numbers, and spacing? Java一种忽略特殊符号、数字和间距的表达式?爪哇
【发布时间】:2021-02-01 18:41:48
【问题描述】:

到目前为止我所拥有的是:

userSent = userSent.replaceAll("\\s+", ""); //replaces all spaces with no spacing
userSent = userSent.replaceAll("[^a-zA-Z0-9]", ""); //remove all special characters
userSent = userSent.replaceAll("[0-9]", ""); //remove all numbers from string

如果可能的话,我想使用 Java 将其简化为一个表达式,谢谢。

【问题讨论】:

  • 您可以在正则表达式中为 or 使用 |,尽管为了便于阅读,这样保留它可能是一个好主意。
  • 如果你想替换任何不是字母的东西,为什么不直接替换所有[^a-zA-Z]。那么您不需要额外的语句来删除数字和空格。您可以进一步简化我将其设为不区分大小写的正则表达式,尽管无论哪种方式都相当简洁。
  • 这个question可以帮助你了解如何使用或在正则表达式中

标签: java replaceall


【解决方案1】:

这三个替换等价于:

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

(“非字母”的字符集包括数字和空格。)

但是,我怀疑这不是您真正想要的,因为它会删除所有不在拉丁字母表中的字符,并将它们全部混合成一个“单词”。这真的是你想要的吗? (在我看来,它与您的问题标题中的问题描述不符。)

我的建议是在尝试将它们组合成一个正则表达式之前,确保 3 个替换项符合您的实际需要(换句话说...组合测试它们)。

【讨论】:

  • 谢谢,这可以满足我的需要 =) 我会努力制作更准确的标题
  • 好的……如果你说这确实是你需要的……我们必须相信你的话。
猜你喜欢
  • 1970-01-01
  • 2011-01-23
  • 2015-06-25
  • 2021-10-09
  • 1970-01-01
  • 2013-11-23
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多