如何将string =“\ t”转换为char

时间:2011-05-05 15:07:18

标签: java string parsing csv char

我正在为一个解析日志并上传到服务器的java桌面应用程序工作。我们要求用户提供解析CSV文件的分隔符,并从字符串中的文本字段读取提供的分隔符,并通过 -

制作字符

separator = (sTerminatedBy != null && !sTerminatedBy.equalsIgnoreCase("")) ? sTerminatedBy.charAt(0) : ' ';

因为我的解析器代码接受char中的分隔符。

问题是当用户提供“\ t”时,我如何在我的解析器中为char提供分隔符。用户可以请求通过任何分隔符进行解析,以便任何正文可以建议我可以对通用代码做什么,并且可以在char中提供分隔符。

6 个答案:

答案 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);
}

干杯,