Java 获取字符串的第一个单词?

Java 获取字符串的第一个单词?,java,regex,string,split,Java,Regex,String,Split,我想获取字符串的第一个单词并将其保存到变量中。我知道string.split方法可以工作,如果您知道要拆分的内容。让我困惑的是,我拥有的琴弦并不总是一样的。下面是一些示例字符串,我想保存的是粗体 未过滤总铅 PH-LOG H+浓度 水流条件 硝酸盐总量,未满REAC 四氯苯1,2,3,4您试图做的基本上是不可能的,因为您列出的名称没有共同的模式。仅最后一个示例就可以将内容分解,因为它在单词中包含空格和逗号,而其他示例需要分解空格和逗号 我能想到的唯一方法就是拥有一本你正在使用的化学名称/单词/等

我想获取字符串的第一个单词并将其保存到变量中。我知道string.split方法可以工作,如果您知道要拆分的内容。让我困惑的是,我拥有的琴弦并不总是一样的。下面是一些示例字符串,我想保存的是粗体

未过滤总铅 PH-LOG H+浓度 水流条件 硝酸盐总量,未满REAC
四氯苯1,2,3,4您试图做的基本上是不可能的,因为您列出的名称没有共同的模式。仅最后一个示例就可以将内容分解,因为它在单词中包含空格和逗号,而其他示例需要分解空格和逗号

我能想到的唯一方法就是拥有一本你正在使用的化学名称/单词/等的词典,然后你可以对照该词典进行检查,直到找到匹配项

将字典存储在HashSet或HashMap中,您可以快速检查匹配项,只需扫描字符串以查找第一个非字母数字。检查到目前为止找到的内容是否在集合中,如果不在集合中,请重复此过程继续扫描,直到找到匹配项或字符串用尽为止。

尝试以下操作:

       String  lines[]= {"LEAD, UNFILTERED TOTAL","PH(-LOG H+ CONCN)","STREAM CONDITION","NITRATES TOTAL, UNFIL.REAC","TETRACHLOROBENZENE 1,2,3,4"};
       String COMMA=",";
       String REGEX="(^(\\w|\\+|\\-|\\(|\\))+(\\W?,?\\d)*)";
       Pattern res=Pattern.compile(REGEX);
       Pattern resComma=Pattern.compile(COMMA);
       Matcher match;
       for(String line:lines){
         if(!resComma.matcher(line).find()){
          System.out.println(" RESULT "+ line);  
         }
         else if ((match=res.matcher(line)).find())
          System.out.println(" RESULT "+ match.group());
       }

与其尝试使用正则表达式,还可以使用break迭代器-java.text.BreakIterator

要获取字符串中的单词,请使用:

BreakIterator iter = BreakIterator.getWordInstance();

iter.setText(text);

for (int loc = iter.first(), lastLoc = 0; loc != BreakIterator.DONE; loc = lastLoc, loc = iter.next)
 {
    if (loc == 0)
       continue;

    String word = text.substring(lastLoc, loc);
 }

中断迭代器用于查找文本中的“边界”——可能是单词、句子或其他内容。上面的示例使用预定义的分词迭代器,该迭代器返回单词或标点符号开头的索引,并在连续调用时遍历文本。循环只是使用迭代器返回的当前和以前的位置提取单词,标点符号将被提取为单独的单词。

您的意思是在“流条件”中仅使用粗体“流”吗??你应该把你的题目改成“单词”而不是“字母”。我想你自己已经解决了!现在构建一个与您的测试用例匹配的正则表达式过滤器,您就可以完成了。@danronmoon不,我想要两个词。@STLDeveloper好的,谢谢。我知道我将使用的模式,例如2、3和5。但是我该怎么做1号和4号呢?我想检查后面跟一个非字母字符的任意字母数,只保留第一个字母,但这不能满足第二个示例的要求。您可能需要执行多个比较。换句话说,您可能需要使用多个正则表达式测试。谢谢您的回答。你能解释一下它的作用吗?