簡體   English   中英

如何用這個正則表達式拆分String?

[英]How to split String with this regular expression?

if (url.contains("|##|")) {
    Log.e("url data", "" + url);
    final String s[] = url.split("\\|##|");
}

我有一個帶分隔符"|##|"的URL

我試圖將其分開,但沒有找到解決方案。

使用Pattern.quote ,它將為您完成工作:

返回指定String的文字模式 String。

final String s[] = url.split(Pattern.quote("|##|"));

現在“| ## |” 被視為字符串文字“| ## |” 而不是正則表達式“| ## |”。 問題是你沒有逃脫第二個管道,它在正則表達式中具有特殊含義。

另一種解決方案(由@kocko建議)可以手動轉義*特殊字符:

final String s[] = url.split("\\|##\\|");

*轉義特殊字符由\\完成,但在Java \\中表示為\\\\

你必須逃避第二個| ,因為它是一個正則表達式運算符:

final String s[] = url.split("\\|##\\|");

您應該嘗試理解這個概念 - String.split(String regex)將參數解釋為正則表達式,因為管道符“|” 是正則表達式中的邏輯OR,您將獲得結果,因為每個字母的數組都是您的單詞。
即使你使用過url.split("|"); 你會得到相同的結果。

現在為什么String.contains(CharSequence s)傳遞了|##| 在開始時因為它將參數解釋為CharSequence而不是正則表達式。

結論:檢查API,了解特定方法如何解釋傳遞的輸入。 就像我們看到的那樣,在split()的情況下,它將解釋為正則表達式,而在contains()的情況下,它將解釋為字符序列。

你可以在這里查看正則表達式結構 - http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM