一,JAVA中的 \r\n 替换
如果Eclipse控制台输出 Hello\r\nWorld
那么实际上该字符串内容为 Hello\\r\\nWorld
为什么 \r\n 没有换行而是直接输出来了?
原因是该字符串的实际内容是 Hello\\r\\nWorld 而不是Hello\r\nWorld
换句话说,
System.out.println("Hello\r\nWorld");//world在下一行输出
System.out.println("Hello\\r\\nWorld");//world不会在下一行输出
那么当得到 Hello\\r\\nWorld 这样的字符串时,若要使 Hello 与 World 在不同行输出,即替换掉 \\r\\n
可以使用如下办法
String result = str.replace("\\r\\n", System.getProperty("line.separator"));
String result2 = str.replaceAll("\\\\r\\\\n", System.getProperty("line.separator"));
JAVA中String类的replace()方法不会使用正则表达式替换,而 replaceAll()方法使用正则表达式替换,因此:
对于正则表达式而言,要替换 \\r\\n ,需要将特殊字符 \ 进行 转义。由于 \\r 中有两个特殊字符 \ 故需要转义两次,同理 \\n
replace()方法并不使用正则表达式,因此是直接替换 \\r\\n 为行分隔符。
System.getProperty("line.separator"); 表示 获得当前系统中的行分隔符。
参考资料:
http://my.oschina.net/u/816576/blog/369643
二,json格式的字符串解析
1,解析Json格式的字符串有许多可供使用的 lib包。如org.json 和 josn-lib ,还有Google的gson。下面使用 json-lib。
json-lib 包需要以下的依赖包:(json-lib官网参考)
{"aaa": "value1", "bbb":"value2","ccc":["key" : "value3", "key" : "value4", "key" : "value5"],"ddd":"value6"}
可以采用如下解析方法:
JSONObject jsonObj = JSONObject.fromObject(jsonString);//将jsonString 字符串转换成JSON对象
现在可以根据key来获得相应的value
。比如,获取字符串value1的值如下
String val= jsonObj.getString("aaa");//get key=aaa 's value
System.out.println(val);//print value1
JSONArray jsarray = JSONArray.fromObject("ccc");
然后,调用 JSONArray中的方法遍历数组中的每个值。
for(int index = 0; index < jsarray.size(); index++){
String value= jsarray.getJSONObject(index).getString("key");
System.out.println(value);
}
上面会打印出
value3
value4
value5
也就是说,对于JSON而言,大花括号{ } ,表示一个JSONObject对象。中括号 [ ] 表示 JSONArray对象。