我在从每个字符串行中提取术语时遇到了严重的问题。更确切地说,我有一个csv格式的文件,它实际上不是csv格式(它只将所有术语保存成一行)。
因此,下面是数千行字符串中的字符串行示例:
test.csv
"31451 CID005319044 15939353 C8H14O3S2 beta-lipoic acid C1C[S@](=O)S[C@@H]1CCCCC(=O)O "
"12232 COD05374044 23439353 C924O3S2 saponin CCCC(=O)O "
"9048 CTD042032 23241 C3HO4O3S2 Berberine [C@@H]1CCCCC(=O)O "
我想提取‘β-硫辛酸’,‘皂苷’和‘小檗碱’,仅位于第5位。你可以看到术语之间有很大的空隙,这就是为什么我说第5位。
在这种情况下,如何提取每一行位于第五位的术语?
还有一件事,:六个术语之间的空格长度并不总是相等的。长度可以是一、二、三、四、五,或者类似的东西。由于空格长度是随机的,所以我不能使用.split()
函数。例如,在第一行中,我会得到“β-硫辛酸”而不是“β-硫辛酸”。**
发布于 2014-04-28 16:55:17
为此提供算法:
\t
字符是否取决于文件内容)。List<String>
。
您可以使用Scanner
类轻松地完成这一任务:
List<String> desiredContent = new ArrayList<>();
Scanner scanner = new Scanner(new File("/path/to/file.csv"));
while (scanner.hasNext()) {
String line = scanner.nextLine();
String[] contents = line.split(" ");
desiredContent.add(contents[4]);
}
发布于 2014-04-28 16:54:56
发布于 2014-04-28 16:55:59
您可以使用字符串的拆分方法。
首先你需要一行行地得到字符串.
示例:
String [] result = scanner.nextLine().split(" ");
System.out.print(result[4]);
拆分将为您提供一个字符串数组,每个空格都被拆分。索引4表示所需字符串的第五个位置。
https://stackoverflow.com/questions/23353676
复制