下面的程序从一个名为的文件中读取文本,tes.txt
并将纯英语字符串与整个文件中相同的乌尔都语字符串分开。它作为每个英语单词之后的印记。该文件如下所示:(乌尔都语字符串跟随英文字符串)
سٹیمپ ختم ہو جاتی ہے
suhail
سٹیمپ ختم ہو جاتی ہے
gupta
سٹیمپ ختم ہو جاتی ہے
ghazal
سٹیمپ ختم ہو جاتی ہے
在使用 windows 时,我编译了以下程序:
import java.io.*;
class checker {
public static void main(String args[]) {
try {
File f = new File("C:/Users/user/Desktop/tes.txt");
FileReader reader = new FileReader(f);
char buffer[] = new char[1024];
String text = "";
while( reader.read(buffer) > 0 ) {
text += buffer.toString();
}
String splits[] = text.split("سٹیمپ ختم ہو جاتی ہے");
for(int i=0;i<splits.length;i++) {
System.out.println(splits[i]);
}
} catch(Exception exc) {
exc.printStackTrace();
}
}
}
作为javac -encoding UTF-8 checker.java
。但是当我运行这个程序时,我得到的输出是[C@19b49e6
。为什么是这样 ?它也只打印数组中的一个字符串。我还检查了缓冲区数组的长度,结果是一个。为什么是一个(文件中有多个字符串在将其与正则表达式分离后会进入缓冲区)?我在哪里犯了错误?