我目前有文字,其中我有“TweetJSONObject \ r \ n \ n / 19/14 / 14TweetJSONObject”,其中TweetJSONObject只是一个json格式的推文。现在我正在使用.split()函数尝试将推文彼此分开,但似乎\ r \ n / 19/19/14不是一个合适的分裂字符串?这是代码:
String[] value = line.split("\r\n09/19/14");
PrintWriter writer = new PrintWriter("hello.txt", "UTF-8");
writer.println(value[0]);
writer.close();
文本文件'hello',当我打开它时,再次只是以下字符串,“TweetJSONObject \ r \ n \ n / 19/14 / 14TweetJSONObject”。关于我哪里出错的任何想法?
答案 0 :(得分:3)
你需要逃避反斜杠:
String[] value = line.split("\\\\r\\\\n09/19/14");
在文字Java字符串中,反斜杠是一个转义字符。文字字符串"\\"
是单个反斜杠。在正则表达式中,反斜杠也是转义字符。正则表达式\\
匹配单个反斜杠。因此,这个正则表达式作为Java字符串变为"\\\\"
。
答案 1 :(得分:1)
我建议使用库方法Pattern.quote
,而不是试图自己逃避(这太容易混淆和容易出错)。一个小的可运行的例子:
package net.sanjayts;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String s = "TweetJSONObject\r\n09/19/14TweetJSONObject";
String[] parts = s.split(Pattern.quote("\r\n09/19/14"));
System.out.println(parts[0] + " --- " + parts[1]);
}
}
//Output: TweetJSONObject --- TweetJSONObject
答案 2 :(得分:0)
你需要逃避斜杠
String[] value = line.split("\\\\r\\\\n09/19/14");
PrintWriter writer = new PrintWriter("hello.txt", "UTF-8");
writer.println(value[0]);
writer.close();