Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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_Selenium - Fatal编程技术网

java从字符串中提取值

java从字符串中提取值,java,string,selenium,Java,String,Selenium,我有如下值的字符串 String s1 = "{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes":

我有如下值的字符串

String s1 = "{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes": [] }"
我只需要测量值 i、 e我的结果应该是:528391^MDC\u DEV\u SPEC\u PROF^M12343


请帮助解决这个问题。

首先:创建一个与您的JSON作业相匹配的类,您必须至少完成并发布您的初始请求

第二:decise存储了JSON文件…因为您的字符串不是一个构建良好的字符串


第三:选择一个库GSON或core java…来提取JSON 2对象

如果您的文本总是采用这种格式,并且您不想使用JSON解析它,那么您可以执行以下操作

自己做错误检查和健全性检查。 处理是否存在间距、未找到搜索键等

 public static void main(String []args){ 


    String s1 = " \"{\"measurements\": [\"528391^MDC_DEV_SPEC_PROF^M12343\"], \"metrics\": [\"150021^MDC_PRESS_BLD_NONIN234^MDC\", \"150022^MDC_PRESS_BLD_NONINV_DIA^MDC\", \"150023^MDC_PRESS_BLD_12344^MDC\", \"149546^MDC_PULS_RATE_INV^MDC\"], \"accessoryTypes\": [] }\"";

    String testString = "measurements\": [\"";
    String endString = "\"],";

    System.out.println(s1);


    String result = getValue(s1, testString, endString);

    System.out.println("RESULT = "+result);

 }

 public static String getValue(String s1, String keyString, String endString){

    int from = s1.indexOf(keyString) + keyString.length(); 
    int to = s1.substring(from).indexOf(endString); 
    return s1.substring(from, from+to); 

 }
您的结果如下所示

$java -Xmx128M -Xms16M HelloWorld
 "{"measurements": ["528391^MDC_DEV_SPEC_PROF^M12343"], "metrics": ["150021^MDC_PRESS_BLD_NONIN234^MDC", "150022^MDC_PRESS_BLD_NONINV_DIA^MDC", "150023^MDC_PRESS_BLD_12344^MDC", "149546^MDC_PULS_RATE_INV^MDC"], "accessoryTypes": [] }"
RESULT = 528391^MDC_DEV_SPEC_PROF^M12343

您可以使用以下命令分析此字符串:


这是用核心Java制作的。但是,我真的建议您使用一些JSON 2对象库。

干净的方法应该是将其解析为JSON,但是如果这太过复杂,那么您可以编写一个带有正则表达式的匹配器,如下所示:

public String parseMeasurements(String s) {
    final Matcher matcher  = Pattern.compile("\"measurements\": \[\"(.*?)\"\]").matcher(s);
    return matcher.group(1);
}

请检查括号是否被正确转义,正则表达式是否不是贪婪的,而是懒惰的,以便停止匹配第一个结束括号。这个在哪?应该使它变懒

您可以将字符串传递给类,并从中获取DTO对象

import com.google.gson.GsonBuilder;

GsonBuilder gsonBuilder = new GsonBuilder();
        MeasurementsDTO measurementsDTO = gsonBuilder.create().fromJson(s1,
                MeasurementsDTO.class);

这回答了你的问题吗?不它不是JSON,纯粹是上面所说的字符串格式。考虑到你的问题,它确实看起来像是字符串格式的JSON。我还记得你的大问题!!!
Example example = parseJSON(input);
    example.getMeasurements();
public String parseMeasurements(String s) {
    final Matcher matcher  = Pattern.compile("\"measurements\": \[\"(.*?)\"\]").matcher(s);
    return matcher.group(1);
}
import com.google.gson.GsonBuilder;

GsonBuilder gsonBuilder = new GsonBuilder();
        MeasurementsDTO measurementsDTO = gsonBuilder.create().fromJson(s1,
                MeasurementsDTO.class);