问题
<span style="font-size:18px;"> tagged=tagData(data, tagger1, tagger2);//tagged是我NER出来的文档。 //内容如The fate of [ORG Lehman Brothers] , Secretary [PER Henry M. Paulson Jr] . //注意上面,逗号和句号前面都有空格,我的目的就是要去掉他。 OutFile out = new OutFile(outFiles.elementAt(fileId)); out.println(tagged); out.close(); </span>
解决失败方法1
<span style="font-size:18px;">out.out.toString().replace(",",".");//只是因为找出来String类型的才有replace方法</span>
解决失败方法2
<span style="font-size:18px;"> tagged.replaceAll("\\s*|\t|\r|\n.","."); out.println(tagged); out.close(); </span>
困扰我一晚上,我就各种正则的套,因为replaceAll前面是正则的形式。
分析:API如下:
replaceAll
public String replaceAll(String regex, String replacement)
- 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同:
Pattern
.compile
(regex).matcher
(str).replaceAll
(repl)注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅
Matcher.replaceAll
。如有需要,可使用Matcher.quoteReplacement(java.lang.String)
取消这些字符的特殊含义。 -
- 参数:
regex
- 用来匹配此字符串的正则表达式replacement
- 用来替换每个匹配项的字符串- 返回:
- 所得 String
问题:我尼玛没有返回改变的string!!导致最后输出文本中tagged一直是不变的!!!
正确解决
<span style="font-size:18px;"> String str=tagged.replaceAll("\\s,",","); String str2=str.replaceAll("\\s\\u002E","."); //tagged.replaceAll("\\s*|\t|\r|\n.","."); out.println(str2); out.close(); </span>
深藏功与名。
关于一个困扰一晚上的bug -- java 返回值问题
时间: 2024-10-12 11:18:12