我遇到需要读取固定宽度字节的CSV文件的情况。
以下是我的示例csv格式
ABCD EF日本 3456 0
ABCD EF感じ日本 9345 1
我需要
AB,CD,,EF,日本,3456,,0
AB,CD,,EF,感じ日本,9345,,1
问题是因为日文字符是多字节的,每个字符需要2个字节,因此固定宽度逻辑不适用。
有些人可以指导如何使用java实现这一点,或者我可以使用任何标准的CSV库。
任何提及的脚本或库都将受到赞赏。
答案 0 :(得分:0)
以固定宽度分割字符串的示例程序(您可以添加文件读取和逗号):
public class SplitStringIntoFixedSizeChunks {
public static String[] Split(String text, int chunkSize, int maxLength) {
char[] data = text.toCharArray();
int len = Math.min(data.length,maxLength);
String[] result = new String[(len+chunkSize-1)/chunkSize];
int linha = 0;
for (int i=0; i < len; i+=chunkSize) {
result[linha] = new String(data, i, Math.min(chunkSize,len-i));
linha++;
}
return result;
}
public static void main(String[] args) {
String x = "ABCD EF日本 3456 0 ABCD EF感じ日本 9345 1";
//To Print length //System.out.println("x length: "+x.length());
String[] lines = Split(x, 2, x.length());
for (int i=0; i < lines.length; i++) {
System.out.print(lines[i]);
System.out.print( ",");
}
}
}
输出:
AB,CD, E,F日,本 ,34,56, 0, A,BC,D ,EF,感じ,日本, 9,34,5 ,1,
注意:如果您"error: unmappable character for encoding ASCII"
运行export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8