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

。
我的问题是如何防止这个换行符连接到下面代码中的字符串?
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 " 
"
// before concatenating the String "x" to String "sum"
flag=1;
}
}
}
答案 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 " 
"
// before concatenating the String "x" to String "sum"
flag=1;
}
吗?
s
<强>更新强>
哦,我明白了。所以你真正想要的更像是:
sum += s + ".";
(假设关键字以字母开头和结尾,并且本身不包含任何RegEx代码)