java - 使用 split 使用分隔符选项卡 "\t"在 Java 中解析字符串

标签 java string csv

我正在处理一个制表符分隔的字符串。我正在使用 split 函数完成此操作,并且它适用于大多数情况。缺少字段时会出现问题,因此我没有在该字段中获取 null,而是得到下一个值。我将解析后的值存储在字符串数组中。

String[] columnDetail = new String[11];
columnDetail = column.split("\t");

任何帮助将不胜感激。如果可能的话,我想将解析后的字符串存储到一个字符串数组中,以便我可以轻松访问解析后的数据。

最佳答案

String.split使用 Regular Expressions ,你也不需要为你的拆分分配一个额外的数组。

split-method 会给你一个列表。,问题是你试图预先定义你有多少个标 checkout 现,但你怎么知道呢?尝试使用 Scanner 或 StringTokenizer 并了解拆分字符串的工作原理。

让我解释一下为什么\t 不起作用以及为什么需要 \\\\逃离\\ .

好的,所以当你使用 Split 时,它实际上需要一个正则表达式(正则表达式),并且在正则表达式中你想定义要分割的字符,如果你写\t 这实际上并不意味着 \t你想要分割的是\t , 正确的?所以,只需写\t你告诉你的正则表达式处理器“嘿,被转义的字符分割”“嘿,被所有看起来像 \t 的字符分割”。注意到区别了吗?使用\意味着逃避某些东西。和\在正则表达式中的意思与您的想法完全不同。

所以这就是你需要使用这个解决方案的原因:

\\t

告诉正则表达式处理器寻找\t。好吧,那你为什么需要两个呢?嗯,第一个\转义了第二个,这意味着它看起来像这样:\t 当你正在处理文本!

现在假设您要拆分\

那么你会留下\\但是你看,那行不通!因为\会尝试转义前一个字符!这就是为什么您希望输出为\\,因此您需要有\\\\。

我真的希望上面的示例可以帮助您理解为什么您的解决方案不起作用以及如何征服其他解决方案!

现在,我给了你这个 answer以前,也许你现在应该开始研究它们。

其他方法

StringTokenizer

您应该查看 StringTokenizer ,对于这类工作来说,它是一个非常方便的工具。

示例

 StringTokenizer st = new StringTokenizer("this is a test");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

这将输出

 this
 is
 a
 test

您使用 StringTokenizer 的 Second Constructor 来设置分隔符:

StringTokenizer(String str, String delim)

扫描仪

您也可以使用 Scanner正如其中一位评论员所说,这可能看起来有点像这样

示例

 String input = "1 fish 2 fish red fish blue fish";

 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");

 System.out.println(s.nextInt());
 System.out.println(s.nextInt());
 System.out.println(s.next());
 System.out.println(s.next());

 s.close(); 

输出将是

 1
 2
 red
 blue 

意思是它会把“fish”这个词删掉,把剩下的给你,用“fish”作为分隔符。

examples taken from the Java API

关于java - 使用 split 使用分隔符选项卡 "\t"在 Java 中解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635764/

相关文章:

r - 如何通过合并 csv 文件创建数据框,然后基于它创建 Shiny 的应用程序?

json - 测试API请求是否正常工作

java - 还有其他方法可以使用监听器在单击按钮时调用方法吗?

java - 你好,我想做一个程序,它存储名称并在写入“stop”结束时停止,并且程序显示存储在其中的名称

c - c 中的字符串作为数组

javascript - 将 Unicode Javascript 字符串转换为 PHP utf8 字符串

javascript - 更新客户端表

java - 如何在 Eclipse 程序中启用 Java 关键字断言?

java - Model-View-Presenter被动 View : bootstraping - who displays the view initially?

c - 猜单词 : I/O C logic error