如何在Java中获取字符串中的特定单词

时间:2019-04-24 14:59:15

标签: java

我有以下文本:

"The data of Branch 1 are correct - true"
"data of Branch 4 are correct - false"

对于每个文本,我想获取分支数和布尔值true或false。每行的结果将是:

1 true
4 false

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以用不同的方式来做。

在这种情况下,最简单的方法之一是分割字符串并获取第五和第九个元素

String sentence = "The data of Branch 1 are correct - true"; 
String[] elements = string.split(" "); then get relevant elements of array.
// elements[4]   is the string 1 (you can convert it to int if necessary with Integer.parseInt(elements[4]) )
// elements[8]   is the string true (you can convert it to boolean if necessary with Boolean.parseBoolean(elements[4]) )

其他可能性是:

  • 使用正则表达式(查找数字并搜索单词true false)
  • 使用位置(您知道数字始终在同一位置开始,并且布尔值始终在末尾)

知道您可以创建类似于以下内容的方法来打印相关部分:

public static void printRelevant(String string) {
    String[] elements = string.split(" "); 
    System.out.println(elements[4] + " " + elements[8]);
}

...

pritnRelevant("The data of Branch 1 are correct - true");
printRelevant("The data of Branch 4 are correct - false");

由于对Sotirios的评论,我看到这两个短语不相等。 因此有必要使用正则表达式提取相关部分:

public static void printRelevant(String string) {
    Pattern numberPattern = Pattern.compile("[0-9]+");
    Pattern booleanPattern = Pattern.compile("true|false");

    Matcher numberMatcher = numberPattern.matcher(string);
    Matcher booleanMatcher = booleanPattern.matcher(string);
    if (numberMatcher.find() && booleanMatcher.find()) {
        return numberMatcher.group(0) + " " + booleanMatcher.group(0);
    }
    throw new IllegalArgumentException("String not valid");
}

答案 1 :(得分:0)

步骤1:使用String按空格分割将所有元素放入数组中

第2步:找到您感兴趣的元素的索引

步骤3:将每个元素String解析为所需的类型(IntegerBoolean

那应该让您入门!

答案 2 :(得分:0)

如果输入字符串始终具有相同的“模式”,则只需执行以下操作:


input = "The data of Branch 1 are correct - true";

// split by space
String [] words = input.split(" ");

// take the values (data) that you need.
System.out.println(words[4] + " " + words[8]);
// also you can cast values to the needed types

类似这样的事情。 最好的方法可能是使用Regex从输入字符串中获取所需的数据。