我想手动添加两个 java JSON 字符串,因此为此我需要删除 "}" 并将其替换为第一个 JSON 字符串的逗号 "," 和删除第二个 JSON String 的第一个 "{" 。 这是我的程序
import java.util.Map;
import org.codehaus.jackson.type.TypeReference;
public class Hi {
private static JsonHelper jsonHelper = JsonHelper.getInstance();
public static void main(String[] args) throws Exception {
Map<String, Tracker> allCusts = null;
String A = "{\"user5\":{\"Iden\":4,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";
String B = "{\"user1\":{\"Iden\":4,\"Num\":1},\"user3\":{\"Iden\":6,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";
String totalString = A + B;
if (null != totalString) {
allCusts = (Map<String, Tracker>) jsonHelper.toObject(
totalString, new TypeReference<Map<String, Tracker>>() {
});
}
System.out.println(allCusts);
}
}
将两个字符串 A + B 相加时
我想删除 A 中“}”的最后一个字符并将其替换为“,”,并删除 B 中“{”的第一个字符。
所以这应该是这样的。
String A = "{\"user5\":{\"Iden\":4,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1},";
String B = "\"user1\":{\"Iden\":4,\"Num\":1},\"user3\":{\"Iden\":6,\"Num\":1},\"user2\":{\"Iden\":5,\"Num\":1}}";
我已经尝试过
String Astr = A.replace(A.substring(A.length()-1), ",");
String Bstr = B.replaceFirst("{", "");
String totalString = Astr + Bstr ;
有了这个我就得到了
线程“main”中的异常java.util.regex.PatternSyntaxException:非法重复
请提出建议。
最佳答案
{
是正则表达式的控制字符,从replaceFirst
开始将正则表达式的字符串表示形式作为其第一个参数,您需要对 {
进行转义,以便它不被视为控制字符:
String Bstr = B.replaceFirst("\\{", "");
<小时/>
我想说,使用替换方法在这里确实有点矫枉过正,因为您只是想从字符串的任一端截掉一个字符。这应该同样有效:
String totalString = A.substring(0, A.length()-1) + "," + B.substring(1);
关于Java : Replacing Last character of a String and First character of the String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225910/