gpt4 book ai didi

java - 消除java中的 "\u3000"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:52 27 4
gpt4 key购买 nike

当我试图编译一个 java 文件时,编译器提示“非法字符\u3000”,

enter image description here

搜索后发现是 CJK Unified Ideographs 中国韩国和日本的SPACE。我决定编写一个简单的搜索和删除 java 文件来消除它,而不是手动删除特殊的 SPACE。

但是并没有指出索引错误。那么如何写一个代码来消除这个特殊的SPACE

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class BufferReadAFile {
public static void main(String[] args) {

//BufferedReader br = null;
String sCurrentLine;
String message = "";
try {

/*br = new BufferedReader(new FileReader("/Users/apple/Test/Instance1.java"));

while ((sCurrentLine = br.readLine()) != null) {
message += sCurrentLine;
}
*/
String content = new Scanner(new File("/Users/apple/Coding/Instance1.java")).useDelimiter("\\Z").next();
//System.out.println(content);
searchSubString(content.toCharArray(),"\\u3000".toCharArray());

} catch (IOException e) {
e.printStackTrace();
}

}


public static void searchSubString(char[] text, char[] ptrn) {
int i = 0, j = 0;
// pattern and text lengths
int ptrnLen = ptrn.length;
int txtLen = text.length;

// initialize new array and preprocess the pattern
int[] b = preProcessPattern(ptrn);

while (i < txtLen) {
while (j >= 0 && text[i] != ptrn[j]) {
j = b[j];
}
i++;
j++;

// a match is found
if (j == ptrnLen) {
System.out.println("found substring at index:" + (i - ptrnLen));
j = b[j];
}
}
}


public static int[] preProcessPattern(char[] ptrn) {
int i = 0, j = -1;
int ptrnLen = ptrn.length;
int[] b = new int[ptrnLen + 1];

b[i] = j;
while (i < ptrnLen) {
while (j >= 0 && ptrn[i] != ptrn[j]) {
// if there is mismatch consider the next widest border
// The borders to be examined are obtained in decreasing order from
// the values b[i], b[b[i]] etc.
j = b[j];
}
i++;
j++;
b[i] = j;
}
return b;
}


}

最佳答案

我不认为 "\\u3000" 是您想要的。你可以把字符串打印出来,自己看看里面的内容。您应该改用 "\u3000"。请注意单个反斜杠。

System.out.println("\\u3000"); // This prints out \u3000
System.out.println("\u3000"); // This prints out the CJK space

或者,您可以直接使用实际的 CJK 空格字符,就像在您的 CheckEmpty 类中的一个 if 检查中一样。

关于java - 消除java中的 "\u3000"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35556679/

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