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

标签 java text

我在从每个字符串行中提取术语时遇到严重问题。更具体地说,我有一个 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/

相关文章:

java - 如何从包含java字符串的文件中解码字节?

java - 这个java线程程序的执行结果如何解读解释

java - 如何在扩展 JPanel 的类中绘制带有文本的圆角矩形

python - 在基于 python/tkinter 的文本编辑器中实现文本自动完成

python - 使用 Pandas 数据框中的值注释热图

javascript - 使用 JavaScript 替换 ">"文本

java - Struts 2 加密用户名和密码

java - Play Framework 入口点

java - 错误不可转换类型 "intvalue()"

javascript - 如何为 Quill 内容定义布局?