[英]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.