gpt4 book ai didi

java - 如何从 Java 字符串中提取特定术语?

转载 作者:行者123 更新时间:2023-12-01 13:04:09 24 4
gpt4 key购买 nike

我在从每个字符串行中提取术语时遇到严重问题。更具体地说,我有一个 csv 格式的文件,它实际上不是 csv 格式(它将所有术语仅保存到行 [0] 中)

所以,这只是数千个字符串行中的示例字符串行:

(split() 不起作用。!!!)

测试.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() 函数。例如,在第一行中,我会得到“β-硫辛酸”而不是“β-硫辛酸。**

最佳答案

这是使用字符串分割和索引来解决您的问题的解决方案,

import java.util.ArrayList;

public class StringSplit {

public static void main(String[] args) {
String[] seperatedStr = null;
int fourthStrIndex = 0;
String modifiedStr = null, finalStr = null;
ArrayList<String> strList = new ArrayList<String>();
strList.add("31451 CID005319044   15939353   C8H14O3S2 beta-lipoic acid C1C[S@](=O)S[C@@H]1CCCCC(=O)O ");
strList.add("12232 COD05374044 23439353 C924O3S2 saponin CCCC(=O)O ");
strList.add("9048 CTD042032 23241 C3HO4O3S2 Berberine [C@@H]1CCCCC(=O)O ");

for (String item: strList) {
seperatedStr = item.split("\\s+");
fourthStrIndex = item.indexOf(seperatedStr[3]) + seperatedStr[3].length();
modifiedStr = item.substring(fourthStrIndex, item.length());
finalStr = modifiedStr.substring(0, modifiedStr.indexOf(seperatedStr[seperatedStr.length - 1]));
System.out.println(finalStr.trim());
}
}
}

输出:

β-硫辛酸

皂苷

小檗碱

关于java - 如何从 Java 字符串中提取特定术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com