Java 读取字符串格式并获取所需的不规则数据

Java 读取字符串格式并获取所需的不规则数据,java,string,arraylist,collections,split,Java,String,Arraylist,Collections,Split,我有一个像这样的字符串格式,它是 readAllBytes(new String(Files.readAllBytes(Paths.get(data)) 从文件中 a+2 b+3 c+33 d+88 ...... 我的场景是我想在c+“”之后获取数据。c的位置不是恒定的,但是c只出现一次。它可能发生在任何地方。我所需的值始终仅在c+之后。值33…的所需大小也不是恒定的。有人能帮我找到最佳代码吗?我认为这里需要使用集合。您可以使用这个正则表达式,它可以让您捕获所需的数据 c\+(\d+)

我有一个像这样的字符串格式,它是

readAllBytes(new String(Files.readAllBytes(Paths.get(data))
从文件中

a+2  b+3 c+33 d+88 ......

我的场景是我想在
c+“”
之后获取数据。
c
的位置不是恒定的,但是
c
只出现一次。它可能发生在任何地方。我所需的值始终仅在
c+
之后。值33…的所需大小也不是恒定的。有人能帮我找到最佳代码吗?我认为这里需要使用集合。

您可以使用这个正则表达式,它可以让您捕获所需的数据

c\+(\d+)
说明:

c+匹配紧跟着+字符的文字c字符 (\d+)捕获您感兴趣的下一个数字

演示

下面是一个java代码,用于演示相同的

public static void main(String args[]) {
    String s = "a+2 b+3 c+33 d+88 ";
    Pattern p = Pattern.compile("c\\+(\\d+)");
    Matcher m = p.matcher(s);
    if (m.find()) {
        System.out.println("Data: " + m.group(1));
    } else {
        System.out.println("Input data doesn't match the regex");
    }
}
这将产生以下输出:

Data: 33

此代码将在
c+
之后提取值,直到下一个空格,如果没有空格,则提取到字符串末尾:

String str = "a+2  b+3 c+33 d+88 ";
String find = "c+";

int index = str.indexOf(" ", str.indexOf(find) + 2);
if (index == -1)
    index = str.length();
String result = str.substring(str.indexOf(find) + 2, index);
System.out.println(result);
印刷品

33
或在一种方法中:

public static String getValue(String str, String find) {
    int index = str.indexOf(find) + 2; 
    int indexSpace = str.indexOf(" ", index);
    if (indexSpace == -1)
        indexSpace = str.length();
    return str.substring(index, indexSpace);
}

public static void main(String[] args) {
    String str = "a+2  b+3 c+33 d+88 ";
    String find = "c+";

    System.out.println(getValue(str, find));
}

您能否以以下格式指定一个示例:inputText:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;模式p=Pattern.compile(“属性\\=(\\d+));匹配器m=匹配器p;如果(m.find()){System.out.println(“数据:+m.group(1));}或者{System.out.println(“输入数据与正则表达式不匹配”);}…..我尝试了这个方案,但输入错误..是否捕获显示在properties=旁边的数据?然后您需要像这样编写属性=(\\w+)也不需要转义=字符\\d仅用于捕获数字,其中as\\w等于[a-zA-Z0-9_uux]是的thanx。我得到了它。但我所需的数据是a.b.c格式。从您提供的代码中,我得到了“a”作为输入。我需要a.b.c作为输入。如果要捕获的文本中有点,请使用此字符集[a-zA-Z]如果你的文本中包含数字,那么就用0-9Thanq将数字包含到集合中,这意味着很多。我对这方面非常陌生,请thaq提供帮助和快速回复。