我正在为一个解析日志并上传到服务器的java桌面应用程序工作。我们要求用户提供解析CSV文件的分隔符,并从字符串中的文本字段读取提供的分隔符,并通过 -
制作字符 separator = (sTerminatedBy != null && !sTerminatedBy.equalsIgnoreCase("")) ? sTerminatedBy.charAt(0) : ' ';
因为我的解析器代码接受char中的分隔符。
问题是当用户提供“\ t”时,我如何在我的解析器中为char提供分隔符。用户可以请求通过任何分隔符进行解析,以便任何正文可以建议我可以对通用代码做什么,并且可以在char中提供分隔符。
答案 0 :(得分:4)
你不能用这个吗?
char tab = '\t';
如果是用户输入,则实际字符串将为“\\ t”,因此您必须使用if
if( sTerminatedBy.equals("\\t"))
seperator = '\t';
答案 1 :(得分:1)
if ("\\t".equals(sTerminatedBy)) {
separator = '\t';
} else if (null == sTerminatedBy || "".equals(sTerminatedBy)) {
separator = ' ';
} else {
separator = sTerminatedBy.charAt(0);
}
答案 2 :(得分:0)
这是一个真实的表达方式:
"\t".charAt(0) == '\t'
答案 3 :(得分:0)
对于相同(或类似的问题),这是一个迟到的回答/工作轮次。 对于猪的Java UDF(用户定义函数),我遇到了类似的问题。 UDF有一个限制,只接受字符串参数。除了我的解析器以后需要char来定义分隔符。我不想硬编码分隔符,所以我遇到字符串控制char到char转换问题。所以这是我的工作。 我作为参数我使用了控制字符的十进制表示。所以例如对于TAB('\ t')我使用数字9.比我转换了我的字符串arg(“9”)ro int并且我将int转换为char。
int tab = Integer.parseInt(args[1]);
char ch = (char) tab;
System.out.println("[" + ch + "]");
“9”的输出:
[ ]
不是最好的解决方案,但您不必将所有可能的控制字符编码到代码中。但必须要知道调用者使用正确的ctrl char表示。
答案 4 :(得分:0)
您还可以使用包含所需分隔符的字典:
delimiters = {
"\\t" : '\t',
"\\r" : '\r'
}
等
最后检查定界符中的\\t
是否可以获取值
答案 5 :(得分:-1)
考虑一下:
字符串 = “这个\ TIS \ TTAB \ tseparated”;
推荐方法:
// Can be also used with files and streams
Scanner sc = new Scanner(something);
sc.useDelimiter("\t");
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
对于小投入:
String[] separated = something.split("\t");
for (String string : separated) {
System.out.println(string);
}
干杯,