百度了很多,比较简单的例子也看到了。现在想问一下,如果我有一个比较大的文件,需要判断其中是否有全角字符,如果有,输出该字符并标明所在行。比较好的实现方式有什么呢?比如,怎么读取file,是按行读还是?
各位大神求指教,最好贴详细代码,有劳了❤
我的建议是使用正则表达的全角按行进行匹配,示例代码:
File file = new File("D:\\test.txt");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
String line = br.readLine();
Pattern pattern = Pattern.compile("[\uFE30-\uFFA0]"); // 正则表示全角字符
Matcher matcher;
int lineNum = 1;
while (line != null) {
matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.print("第" + lineNum + "行找到全角字符:\t");
System.out.print(matcher.group(0));
while (matcher.find()) { //有可能一行中有多个全角字符
System.out.print(matcher.group(0));
}
System.out.println();
}
line = br.readLine();
lineNum++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
输入文件test.txt内容如下:
1233435334jsljfs
slfjslaiewk
sjflkskfslkfjwelk
skjfljskjklsjlkkk
sfslkfsksfjsdkjfks
输出内容如下:
第1行找到全角字符: 334
第4行找到全角字符: kkk
第5行找到全角字符: sfslkfs
toCharArray()然后判断每个字符,>=256就是全角的
String s = "123北京hello";
Char[] arr = toCharArray();
int (i = 0; i < arr.length; i++)
{
if (arr[i] >= 256) break;
}
if (i < arr.length) 有全角
toCharArray()然后判断每个字符,>=256就是全角的
String s = "123北京hello";
Char[] arr = s.toCharArray();
int (i = 0; i < arr.length; i++)
{
if (arr[i] >= 256) break;
}
if (i < arr.length) 有全角
编程尚未成功,编程尚未成功
编程尚未成功,编程尚未成功
public static void main(String[] args) throws IOException{
//System.out.println(getStr("手术费","iso-9001"));
File file = new File("test.txt");
Scanner scan = new Scanner(file);
int count = 0;
while(scan.hasNext()){
count++;
String s = scan.nextLine();
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++){
if(arr[i] >= 256){
System.out.println(count+""+arr[i]);
}
}
}
}