事情是这样的,我需要读取一个文件,因此从windows复制了文件的路径进入代码,但是找不到文件。所以猜想路径的字符串含有隐藏字符:
public static void main(String[] args) throws IOException {
//从我的文件目录复制的字符串
//注意!这里需要你自己从电脑相应的目录复制
String fuzhi="C:\\Test\\tst.xml";
//手动输出的字符串
String chunshouda="C:\\Test\\tst.xml";
//把字符串转为字符数组
char[] fuzhiArray = fuzhi.toCharArray();
char[] chunshoudaArray = chunshouda.toCharArray();
//输出的结果是这两个字符串不同
System.out.println(fuzhi);
System.out.println(chunshouda);
System.out.println(fuzhi.equals(chunshouda));
System.out.println("复制的字符串长度: "+fuzhi.length()+"\n"+"手打的字符串长度: "+chunshouda.length());
for (int i = 0; i < fuzhiArray.length; i++) {
System.out.print("["+fuzhiArray[i]+"]");
}
System.out.println();
for (int i = 0; i < chunshoudaArray.length; i++) {
System.out.print("["+chunshoudaArray[i]+"]");
}
}
解决办法:
public static void main(String[] args) throws IOException {
//从我的文件目录复制的字符串
//注意!这里需要你自己从电脑相应的目录复制
String fuzhi="C:\\Test\\tst.xml";
//手动输出的字符串
String chunshouda="C:\\Test\\tst.xml";
//把字符串转为字符数组
char[] fuzhiArray = fuzhi.toCharArray();
char[] chunshoudaArray = chunshouda.toCharArray();
//输出的结果是这两个字符串不同
System.out.println(fuzhi);
System.out.println(chunshouda);
System.out.println(fuzhi.equals(chunshouda));
System.out.println("复制的字符串长度: "+fuzhi.length()+"\n"+"手打的字符串长度: "+chunshouda.length());
for (int i = 0; i < fuzhiArray.length; i++) {
System.out.print("["+fuzhiArray[i]+"]");
}
System.out.println();
for (int i = 0; i < chunshoudaArray.length; i++) {
System.out.print("["+chunshoudaArray[i]+"]");
}
System.out.println();
System.out.println("===================解决办法==================");
String fuzhiDeleteHidenChar = fuzhi.replaceAll("\\p{C}", "");
System.out.println(fuzhiDeleteHidenChar.equals(chunshouda));
char[] fuzhiDeleteHidenCharArray = fuzhiDeleteHidenChar.toCharArray();
for (int i = 0; i < fuzhiDeleteHidenCharArray.length; i++) {
System.out.print("["+fuzhiDeleteHidenCharArray[i]+"]");
}
}