Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择部分的最佳方法字符串中大小发生变化的某些数据部分_Java_String_Xml Parsing_Substring_String Parsing - Fatal编程技术网

Java 选择部分的最佳方法字符串中大小发生变化的某些数据部分

Java 选择部分的最佳方法字符串中大小发生变化的某些数据部分,java,string,xml-parsing,substring,string-parsing,Java,String,Xml Parsing,Substring,String Parsing,我正在寻找一种很好的方法来解析字符串中大小变化的信息的某些部分 例如,字符串可能是 “id:1234警报:a-b向上:12.3向下:12.3” 我需要选择id、alert、up和down的值,所以我最初的想法是子字符串,但后来我认为字符串的长度可以改变大小 “id:123456警报:a-b-c-d向上:12.345向下:12.345” 因此,每次使用子字符串查看字符3到7可能不起作用,因为它无法捕获所需的所有数据 选择所需的每个值的明智方法是什么?希望我已经很好地解释了这一点,因为我通常倾向于用

我正在寻找一种很好的方法来解析字符串中大小变化的信息的某些部分

例如,字符串可能是

“id:1234警报:a-b向上:12.3向下:12.3”

我需要选择
id
alert
up
down
的值,所以我最初的想法是子字符串,但后来我认为字符串的长度可以改变大小

“id:123456警报:a-b-c-d向上:12.345向下:12.345”

因此,每次使用子字符串查看字符3到7可能不起作用,因为它无法捕获所需的所有数据


选择所需的每个值的明智方法是什么?希望我已经很好地解释了这一点,因为我通常倾向于用我糟糕的解释来迷惑人们。我正在用Java编程。

基于正则表达式的基本解决方案可能如下所示:

String input = "id:1234 alert:a-b up:12.3 down:12.3";
Matcher matcher = Pattern.compile("(\\S+):(\\S+)").matcher(input);

while (matcher.find()) {
  System.out.println(matcher.group(1) + " = " + matcher.group(2));
}
这假设您正在查找一个或多个非空白字符,然后是冒号,然后是一个或多个非空白字符

输出:

id=1234
警报=a-b
up=12.3
向下=12.3

您可以使用字符串类中的方法
.split()

看看这个:

String line = "id:1234 alert:a-b up:12.3 down:12.3";
String []splittedLine = line.split(" ");
for(int i = 0; i <= splittedLine.length;i++){
   System.out.println(splittedLine[i]);
}
String line=“id:1234警报:a-b向上:12.3向下:12.3”;
String[]splittedLine=line.split(“”);
对于(int i=0;i您可以简单地使用,首先标记空格,然后标记键/值分隔符(本例中为冒号):

结果:

Key: id         Value: 1234      
Key: alert      Value: a-b       
Key: up         Value: 12.3      
Key: down       Value: 12.3 

您需要更好地描述您在字符串中搜索的内容。您是否总是在查找
?其中
不包含空格?作为旁注,您不需要在问题中加上

s。这就是ENTER键的作用。@brookman,如果
对不包含空格,您可以先使用空格拆分,然后使用冒号(:)拆分每个
对。
Key: id         Value: 1234      
Key: alert      Value: a-b       
Key: up         Value: 12.3      
Key: down       Value: 12.3