gpt4 book ai didi

java - 在java中调用grep时,它不适用于法语字符

转载 作者:行者123 更新时间:2023-11-30 04:26:00 26 4
gpt4 key购买 nike

我在java中调用grep来单独统计语料库中单词列表的数量。

BufferedReader fb = new BufferedReader(
new InputStreamReader(
new FileInputStream("french.txt"), "UTF8"));

while ((l = fb.readLine()) != null){
String lpt = "\\b"+l+"\\b";
String[] args = new String[]{"grep","-ic",lpt,corpus};
Process grepCommand = Runtime.getRuntime().exec(args);
grep.waitFor()
}
BufferedReader grepInput = new BufferedReader(new InputStreamReader(grep.getInputStream()));
int tmp = Integer.parseInt(grepInput.readLine());
System.out.println(l+"\t"+tmp);

这对于我的英语单词列表和语料库来说效果很好。但我还有一个法语单词表和语料库。它不适用于法语,java 控制台上的示例输出如下所示:

� bord      0
� c�t� 0

正确形式:“à bord”和“à côté”。

现在我的问题是:问题出在哪里?我应该修复我的 java 代码,还是 grep 问题?如果是这样我该如何修复它。 (即使我将编码更改为 UTF-8,我也无法在终端上正确看到法语字符)。

最佳答案

问题出在你的设计上。不要从 java 调用 grep。使用纯 java 实现:逐行读取文件并使用纯 java API 实现您自己的“grep”。

但说实话,我相信问题出在你的 shell 上。您是否尝试手动运行 grep 并过滤法语字符?我相信这对你不起作用。这取决于您的 shell 配置,因此取决于平台。 Java 可以提供独立于平台的解决方案。为了实现这一点,您应该尽可能避免使用非纯 java 技术,包括执行命令行实用程序。

顺便说一句,代码逐行读取文件并使用 String.contains() 或模式匹配来过滤行,甚至比运行 grep 的代码更短。

关于java - 在java中调用grep时,它不适用于法语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com