Java 如何从字符串行中提取特定术语?
我在从每个字符串行提取术语时遇到了一个严重的问题。更具体地说,我有一个csv格式的文件,实际上不是csv格式(它只将所有术语保存到第[0]行) 下面是数千行字符串中的字符串行示例: test.csvJava 如何从字符串行中提取特定术语?,java,text,Java,Text,我在从每个字符串行提取术语时遇到了一个严重的问题。更具体地说,我有一个csv格式的文件,实际上不是csv格式(它只将所有术语保存到第[0]行) 下面是数千行字符串中的字符串行示例: test.csv "31451 CID005319044 15939353 C8H14O3S2 beta-lipoic acid C1C[S@](=O)S[C@@H]1CCCCC(=O)O " "12232 COD05374044 23439353 C924O3S2 s
"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()
函数。
例如,在第一行中,我得到的是“β-硫辛酸”,而不是“β-硫辛酸”。*您可以使用扫描仪和下一种方法
希望这能让您走上正轨!为此提供算法:
- 阅读文件的每一行
- 对于每一行,请阅读:
- 按分隔符拆分(不确定是否为空格或制表符
字符,这取决于文件内容)\t
- 检索第5个元素
- 将其存储在集合中,通常为
列表
- 按分隔符拆分(不确定是否为空格或制表符
扫描仪
类轻松完成此操作:
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]);
}
List desiredContent=new ArrayList();
Scanner Scanner=new Scanner(新文件(“/path/to/File.csv”);
while(scanner.hasNext()){
字符串行=scanner.nextLine();
String[]contents=line.split(“”);
添加(目录[4]);
}
您可以使用字符串的拆分方法
首先,您需要逐行获取字符串
例如:
String [] result = scanner.nextLine().split(" ");
System.out.print(result[4]);
split将为您提供一个字符串数组,该数组在每个空格中被拆分。。
索引4表示所需字符串的第5个位置您可以尝试使用正则表达式
List<String> extracted = new ArrayList<String>();
Scanner scanner = new Scanner(new File("filepath/file.csv"));
while (scanner.hasNext())
{
String line = scanner.nextLine();
String[] contents = line.split("\\s\\s+"); //matches two or more whitespace characters
extracted.add(contents[4]);
}
List extracted=new ArrayList();
Scanner Scanner=new Scanner(新文件(“filepath/File.csv”);
while(scanner.hasNext())
{
字符串行=scanner.nextLine();
String[]contents=line.split(\\s\\s+);//匹配两个或多个空白字符
摘录.增加(内容[4]);
}
\\s\\s+
仅当有两个以上的空格时才会拆分
注意:这包括选项卡,因此如果只有一个选项卡,它将被忽略。那么.“β-硫辛酸”会发生什么?它将是“β-硫辛酸”和“酸”对吗?是的…酸从我想要的东西中移除。。