簡體   English   中英

Java String Split on任何字符(包括正則表達式特殊字符)

[英]Java String Split on any character (including regex special characters)

我確定我只是在這里俯瞰...

有沒有一種簡單的方法可以在不應用RegEx規則的情況下在顯式字符上拆分字符串?

例如,我收到一個帶有動態定界符的字符串,我知道第5個字符定義了定界符。

String s = "This,is,a,sample";

為此,這很簡單

String delimiter = String.valueOf(s.charAt(4));
String[] result = s.split(delimiter);

但是,當我使用的分隔符是特殊的RegEx字符時,此方法將無效:

String s = "This*is*a*sample";

那么...有沒有辦法在不嘗試應用額外的RegEx規則的情況下將字符串拆分為顯式字符? 我覺得我一定缺少一些簡單的東西。

split使用正則表達式作為其參數。 *是一個元字符,用於匹配正則表達式中的零個或多個字符,可以使用Pattern#quote來避免解釋該字符

String[] result = s.split(Pattern.quote(delimiter));

您不必擔心字符類型如果使用Pattern

Pattern regex = Pattern.compile(s.charAt(4));
Matcher matcher = regex.matcher(yourString);
if (matcher.find()){
    //do something
}

您可以在輸入分隔符之前在定界符上運行Pattern.quote 。這將創建字符串文字並轉義任何正則表達式特定的字符:

delimiter = Pattern.quote(delimiter);

StringUtils.split(s, delimiter);

這樣會將分隔符視為一個字符,而不是像正則表達式一樣使用它。

StringUtilsApacheCommons庫的一部分,該庫包含大量有用的方法。 值得一看,可以為您節省一些時間。

只需將您的分隔符放在[]之間

String delimiter = "["+s.charAt(4)+"]";
String[] result = s.split(delimiter);

由於[]是正則表達式匹配[]之間的任何字符。 您還可以指定一個定界符列表,例如[*,。+-]

暫無
暫無

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

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