3 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
您也可以為此使用正則表達(dá)式。就像是:
String example="[11/2/19 9:48:25] Timestamp=1549878505 ID=4 Value=2475";
Pattern pattern=Pattern.compile(".*Timestamp=(\\d+).*ID=(\\d+).*Value=(\\d+)");
Matcher matcher = pattern.matcher(example);
while(matcher.find()) {
System.out.println("Timestamp is:" + matcher.group(1));
System.out.println("Id is:" + matcher.group(2));
System.out.println("Value is:" + matcher.group(3));
}
如果令牌的順序可以不同(例如 ID 可以在時(shí)間戳之前),您也可以這樣做。但由于它看起來像日志,可能是結(jié)構(gòu)化的,我懷疑你是否需要這樣做。

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
首先[11/2/19 9:48:25]似乎沒有必要,所以讓我們直接跳入“時(shí)間戳”將其刪除。
使用indexOf(),我們可以找到時(shí)間戳開始的位置。
// "Timestamp=1549878505 ID=4 Value=2475"
line = line.substring(line.indexOf("Timestamp"));
由于每個(gè)字符串都以空格分隔,因此我們可以將其拆分。
// ["Timestamp=1549878505", "ID=4" ,"Value=2475"]
line.split(" ");
現(xiàn)在對于每個(gè)標(biāo)記,我們可以使用 '=' 的索引對其進(jìn)行子串化并將其解析為字符串。
for(String token: line.split(" ")) {
int v = Integer.parseInt(token.substring(token.indexOf('=') + 1));
System.out.println(v);
}
希望有幫助:)

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
String text = "Timestamp=1549878505 ID=4 Value=2475";
Pattern p = Pattern.compile("ID=(\\d)");
Matcher m = p.matcher(text);
if (m.find()) {
System.out.println(m.group(1));
}
輸出 4
添加回答
舉報(bào)