Java字符串撇号替换为\'未生效?Weka.arff文件转义问题求助
解决Weka ARFF文件标题撇号转义无效的问题
嗨,我一眼就看出问题出在哪啦!你这段代码里的字符串替换操作没生效,核心原因是Java里的String是不可变对象——replace()方法不会修改原来的字符串,而是会返回一个全新的替换后的字符串。你现在只是调用了replace(),但没把这个新字符串存回列表里,所以原列表的内容根本没变化~
给你修正后的代码,直接就能用:
List<String> headlines = demoPipe.getHeadlines(); for (int i = 0; i < headlines.size(); i++) { String originalHeadline = headlines.get(i); // 不用单独判断是否包含撇号,replace找不到目标会直接返回原字符串 String escapedHeadline = originalHeadline.replace("'", "\\'"); headlines.set(i, escapedHeadline); System.out.println(headlines.get(i)); }
如果你的项目用的是Java 8及以上版本,还可以用更简洁的流式处理写法,代码更清爽:
import java.util.stream.Collectors; // 直接生成处理好的新列表 List<String> escapedHeadlines = demoPipe.getHeadlines() .stream() .map(headline -> headline.replace("'", "\\'")) .collect(Collectors.toList()); // 验证结果 escapedHeadlines.forEach(System.out::println);
额外提醒一下:如果你的headlines列表是不可修改的(比如通过Arrays.asList()创建的),那set()方法会抛出异常,这时候用流式处理生成新列表的方式就更稳妥啦。
内容的提问来源于stack exchange,提问作者Gil Platt
相关产品推荐
相关产品推荐

