2016-04-04 129 views
0

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

字符串“[^ \ p {阿尔法} - ']”可被用来匹配任何 字符,该字符不是字母,破折号,或撇号;您可能会发现 这个有用的使用时的replaceAll()

我明白的replaceAll()做,但是其他的事情我不明白,是这个小代码[a-zA-Z],你可以在它使用和在哪里寻找更多的他们。所以我非常想做引号说什么,只保留字母和一些标点符号。

+0

对于这你必须学习正则表达式...它谷歌它 –

+1

“字符串文字”是引号内的任何东西。这个特定的字符串文字被用作_regular expression_或简称_regex_。谷歌“Java教程正则表达式”,你可以找出所有的代码是什么意思。或者访问http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html。 – ajb

回答

0

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

我建议此链接更深入tutorial

0

replaceAll()使用正则表达式

在单个帖子中有太多的解释,但我会解释一点。

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

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

所以,正则表达式,如果引用,放在一个replaceAll()将改变一切,这不是字母,.?,或!


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

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

+0

当我将它放入replaceAll()时,是否将正则表达式放入引号中? – DurpBurger

+0

@DurpBurger是的,你需要转义任何需要在字符串中转义的字符。当正则表达式需要自己逃跑时(意味着你需要逃脱逃跑),这是一种痛苦,所以我有时会将它粘贴到一个在线测试器中,以自动逃脱一切。 – Laurel