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提供帮助和快速回复。