簡體   English   中英

替換String對象中的字符時出現Java PatternSyntaxException

[英]Java PatternSyntaxException when replacing characters in a String object

我正在嘗試創建此列表的字符串而不使用以下字符, []因為我想在刪除它們之后替換所有兩個空格。

我嘗試過以下但是我在標題中發現錯誤。 簡單:

[06:15, 06:45, 07:16, 07:46]

結果應如下所示:

06:15 06:45 07:16 07:46

碼:

List<String> value = entry.getValue();
String timeEntries = value.toString();
String after = timeEntries.replaceAll(",", " ");
String after2 = after.replaceAll("  ", " ");
String after3 = after2.replaceAll("[", "");
String after4 = after3.replaceAll("]", "");

replaceAll替換與給定正則表達式匹配的所有匹配項。 既然你只想匹配一個簡單的字符串,你應該使用replace代替:

List<String> value = entry.getValue();
String timeEntries = value.toString();
String after = timeEntries.replace(",", " ");
String after2 = after.replace("  ", " ");
String after3 = after2.replace("[", "");
String after4 = after3.replace("]", "");

要回答主要問題,如果使用replaceAll ,請確保第一個參數是有效的正則表達式。 對於您的示例,您實際上可以將其減少為2次調用replaceAll ,因為其中2個替換是相同的。

List<String> value = entry.getValue();
String timeEntries = value.toString();
String after = timeEntries.replaceAll("[, ]", " ");
String after2 = after.replaceAll("\\[|\\]", "");

但是,看起來你只是試圖將String列表的所有元素連接在一起。 通過迭代列表並使用StringBuilder ,直接構造此字符串會更有效:

StringBuilder builder = new StringBuilder();

for (String timeEntry: entry.getValue()) {
  builder.append(timeEntry);
}

String after = builder.toString();

暫無
暫無

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

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