2017-04-09 68 views
0

目前,我有一个方法,将在下面显示,旨在删除所有使用twitter API检索的推文的单引号和换行符。换行符每次都有效,但由于某种原因,尽管如此,替换角色只能使用一半的时间。这个替换方法在写入文件之前恰好被调用一行,所以我怀疑它由于某种原因而错过了迭代。推文似乎随机过滤。我无法解释为什么它有时会起作用。奇怪的音符。使用x.replace(“\”,“\\'”)删除if语句;结果没有被过滤。如何重新格式化推文,用一致的引号替换单引号

在此先感谢。

public static String replace(String x) { 
    String replaced = x; 


     if (x.contains("'")) { 
      replaced = x.replaceAll("'", "\\\\'"); 
     } 
     if(x.contains("\n") || x.contains("\r")){ 
      replaced = x.replaceAll("\\r\\n|\\r|\\n", " "); 
     } 

     System.out.println(replaced); 

    return replaced; 
} 

编辑:寻找到它,if语句激活,但时间一小部分人,一些鸣叫简单转到的replaceAll线,不被替换。为什么不?我没有任何线索。

样本数据:https://justpaste.it/15c6t 首先搞砸了是“你”线20

+0

如果你想删除单引号,你为什么用'replace = x.replaceAll(“'”,“\\\\'”);'用它替换它? –

+0

只需将其替换为空白 –

+0

我不想删除单引号。我试图逃避它,所以我可以在名为“weka”的第三方程序中使用它进行数据分析。我需要用转义版本替换单引号,这是' – Xenorosth

回答

0

似乎有哪里正在与第二替换方法干扰的第一替代方法的情况。当将两者分成两种不同的方法(虽然很尴尬)时,它的功能应该与它应有的一样。

public static String replace(String x) { //Cleans the single quotes 
    String replaced = x; 
     if (replaced.contains("'")) { 
      replaced = x.replaceAll("'", "\\\\'");    
     } 
    return replaced; 
} 

public static String removeEnters(String x){ //Removes any enters 
    String replaced = x; 
    if(replaced.contains("\n") || x.contains("\r")){ 
      replaced = x.replaceAll("\\r\\n|\\r|\\n", " "); 
    } 
    return replaced; 
}