如何防止CR / LF?

时间:2016-03-31 15:31:25

标签: java html string line-breaks pdfbox

我正在使用pdfbox阅读pdf,显然,至少在基于Windows的框架上,对于换行符使用unicode 
&#10

我的问题是如何防止这个换行符连接到下面代码中的字符串?

tokenizer =new StringTokenizer(Text,"\\.");
while(tokenizer.hasMoreTokens())
{
    String x= tokenizer.nextToken();
    flag=0;
    for(final String s :x.split(" ")) {
       if(flag==1)
          break;
       if(Keyword.toLowerCase().equals(s.toLowerCase()) && !"".equals(s)) {
          sum+=x+"."; //here need first to check for "
&#10"
                      // before concatenating the String "x" to String "sum"
          flag=1;
       }
   }
}

2 个答案:

答案 0 :(得分:2)

分割时应丢弃行分隔符; e.g。

for (final String s : x.split("\\s+")) {

这就是将单词分隔符设为一个或多个空白字符。

(使用trim()在所有情况下都不会工作。假设x包含"word\r\nword"。您不会在这两个单词之间分配,{{1在某些时候会s。然后"word\r\nword"不会删除换行符,因为它们不在字符串的末尾。)

更新

我刚发现您确实在追加s.trim()而不是x。所以你还需要做这样的事情:

s

这比你要求的要多一点。它用一个空格替换每个空格序列。

顺便说一下,如果你使用sum += x.replaceAll("\\s+", " ") + "." 离开循环而不是乱用标志,你的代码会更简单,更有效。 (并且Java有一个break类型......出于天堂的缘故!)

boolean

答案 1 :(得分:0)

您确定要在此处添加MapProperty<String, Map<String, String>> map 吗?

x

你不想要if(Keyword.toLowerCase().equals(s.toLowerCase()) && !"".equals(s)) { sum+=x+"."; //here need first to check for "&#13;&#10" // before concatenating the String "x" to String "sum" flag=1; } 吗?

s

<强>更新

哦,我明白了。所以你真正想要的更像是:

    sum += s + ".";

(假设关键字以字母开头和结尾,并且本身不包含任何RegEx代码)