這是我的解決方案(不打磨,但我希望你明白)。由於缺少查找值的我只是**value**
替換所有值爲例:
public static void main(String[] args) {
String input = "[1] ,[2,4], [1,2,3] ,[12,42]...";
int start = -1;
StringBuilder builder = new StringBuilder();
for (int idx = 0; idx < input.length(); idx++) {
char c = input.charAt(idx);
if (start == -1) {
if (Character.isDigit(c)) {
start = idx;
} else {
builder.append(c);
}
} else if (!Character.isDigit(c)) {
builder.append(valueOf(input.substring(start, idx)) + c);
start = -1;
}
}
if (start != -1) {
builder.append(valueOf(input.substring(start, input.length())));
}
System.out.println(builder);
}
private static String valueOf(String num) {
int val = Integer.parseInt(num);
return map.getOrDefault(val,"**" + val + "**");
}
輸出:
[**1**] ,[**2**,**4**], [**1**,**2**,**3**] ,[**12**,**42**]...
你必須與參考您的地圖,更換表達map.getOrDefault(val,"**" + val + "**")
替換字符串被保留。
我建議看看正則表達式,這將是一個或多或少簡單的解決方案。另一種方法是首先解析字符串(格式非常簡單),使用數據並將其轉換回字符串。 –