如何使用 java 在文件中搜索 unicode 字符串? 下面是我试过的代码。它适用于 unicode 以外的字符串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
import java.util.*;
class file1
{
public static void main(String arg[])throws Exception
{
BufferedReader bfr1 = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Enter File name:");
String str = bfr1.readLine();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s;
int count=0;
int flag=0;
System.out.println("Enter the string to be found");
s=br.readLine();
BufferedReader bfr = new BufferedReader(new FileReader(str));
String bfr2=bfr.readLine();
Pattern p = Pattern.compile(s);
Matcher matcher = p.matcher(bfr2);
while (matcher.find()) {
count++;
}System.out.println(count);
}}
最佳答案
嗯,我可以看到三个潜在的问题来源:
- 正则表达式可能不正确。您真的需要使用正则表达式吗?您是要匹配一个模式,还是只是一个简单的字符串?
- 您可能无法从命令行获取非 ASCII 输入。您应该根据其 Unicode 字符转储输入字符串(请参阅稍后的代码)。
- 您很可能正在以错误的编码读取文件。当前您使用的是始终使用平台默认编码的
FileReader
。您要读取的文件的编码是什么?我建议使用FileInputStream
包装在InputStreamReader
中,使用与文件匹配的显式编码(例如 UTF-8)。
要调试字符串中的真实值,我通常会使用这样的东西:
private static void dumpString(String text) {
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
System.out.printf("%d: %4h (%c)", i, c, c);
System.out.println();
}
}
这样您就可以在字符串中的每个 char
中看到确切的 UTF-16 代码点。
关于java - 使用java在文件中搜索unicode字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943798/