我有一條線:id,name,field,field
。
例如:"100,artist10XD,0,1"
。分詞正則表達式
我想用正則表達式分隔它們。問題是artistName
也可以有一個逗號(這裏的逗號的實際數量是未知的),所以我不能使用split(",")
函數。
結果應該是:
100
artist10XD
0
1
每行有4個值。
請注意,我需要根據規則使用正則表達式。
我有一條線:id,name,field,field
。
例如:"100,artist10XD,0,1"
。分詞正則表達式
我想用正則表達式分隔它們。問題是artistName
也可以有一個逗號(這裏的逗號的實際數量是未知的),所以我不能使用split(",")
函數。
結果應該是:
100
artist10XD
0
1
每行有4個值。
請注意,我需要根據規則使用正則表達式。
,您仍然可以使用split(",");
結果是
split[0] == 100,
split[last -1] == 0,
split[last] == 1,
其餘級聯,是ARTISTNAME
而是分裂由正則表達式的路線,我會嘗試將正則表達式整條線。如果你總是有每行只有藝術家名稱4項的值可能包含逗號,那麼你的正則表達式可能是這樣的:
([^,]+),(.+),([^,]+),([^,]+)
您將有4組如果符合藝術家名字的正則表達式匹配的第二組中。例如:
BufferedReader reader = new BufferedReader(new StringReader(""
+ "100,artist10XD,0,1\n"
+ "100,artist,10,XD,0,1"));
Pattern pattern = Pattern.compile("([^,]+),(.+),([^,]+),([^,]+)");
String line;
while ((line = reader.readLine()) != null)
{
Matcher matcher = pattern.matcher(line);
if (matcher.matches())
{
System.out.println("Artist name: " + matcher.group(2));
}
}
上面的代碼提供了以下的輸出:
Artist name: artist10XD
Artist name: artist,10,XD
你總是有每行4個值?爲什麼你不能使用製表符而不是逗號分隔這些值? – khriskooper
artistName有多少個逗號? –
如果你的值有一個分隔符,你應該考慮圍繞該值使用引號,例如100,「artis,t10XD」,0,1。當你分開這條線時,把引號中的所有內容都當作一個單獨的值。 – Vitolds