【问题标题】:String literal and removing unwanted characters [duplicate]字符串文字并删除不需要的字符[重复]
【发布时间】:2016-04-04 01:11:17
【问题描述】:

我有一个关于删除不需要的字符的问题,或者在更好的意义上,只保留某些字符。我偶然发现了一种叫做字符串文字的东西,我不明白它如何帮助我实现目标。我之前在某个地方偶然发现了这个,但不明白如何使用它。

字符串文字“[^\p{Alpha}-']”可用于匹配任何 不是字母、破折号或撇号的字符;你可能会发现 这在使用 replaceAll() 时很有用

我了解 replaceAll() 的作用,但我不了解的其他事情是您可以在其中使用的小 代码(例如 [a-zA-Z])以及在哪里使用寻找更多。所以我非常想做引号所说的,只保留字母和一些标点符号。

【问题讨论】:

  • 为此你必须学习正则表达式..尝试谷歌它
  • “字符串文字”是引号内的任何内容。这个特定的字符串文字用作正则表达式,或简称为regex。谷歌“java教程正则表达式”,你可以找出所有代码的含义。或访问docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

标签: java string-literals replaceall


【解决方案1】:

您所描述的过程称为正则表达式或简称为正则表达式。它是一种在许多编程语言(包括 Java)中实现的工具,它允许您用一行代码处理字符串,否则会更加复杂和烦人。

我建议这个链接更深入tutorial

【讨论】:

    【解决方案2】:

    replaceAll() 使用正则表达式

    一篇文章要解释的太多了,但我会稍微解释一下。

    这是一个正则表达式:[^A-Za-z.?!]

    • [] 表示一个字符类。它将匹配包含的字符之一(由元字符修改)。
    • ^ 当这是 char 类中的第一个字符时,它是一个元字符,意思是 NOT。
    • A-Z 表示范围。这些 ASCII/Unicode 值之间的任何内容都将被匹配
    • .?! 被视为文字(在其他情况下,它们可以成为元字符)。

    因此,如果引用并放入replaceAll(),正则表达式将更改所有非字母、.?!


    replaceAll() 中的第二个参数也接受一些特殊的正则表达式相关字符,比如$1 并不是字面意思$1

    在使用$1 之前,您需要了解更高级的正则表达式(捕获组)。

    【讨论】:

    • 在将正则表达式放入replaceAll() 时,是否将其放入引号中?
    • @DurpBurger 是的,您需要转义任何需要在字符串中转义的字符。当正则表达式需要 \ 来进行自己的转义时会很痛苦(这意味着您需要逃脱转义),因此我有时会将其粘贴到自动转义所有内容的在线测试器中。
    猜你喜欢
    • 2021-01-13
    • 2015-08-06
    • 2016-06-29
    • 2011-12-24
    • 1970-01-01
    • 2011-09-02
    • 2019-07-11
    相关资源
    最近更新 更多