2016-04-04 155 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