如何在Java中从指定字符串提取double类型值31.0
提取字符串中
key对应的Double值方案 首先你的原始字符串存在JSON语法错误,"value"字段内的内容应该修正为"30inch-33inch Shorts"才能成为合法JSON。以下提供两种可行的提取方案:
方案一:修复JSON后用专业解析库(推荐)
如果能修正字符串语法,用JSON解析库是最可靠的方式,以Java为例:
- 修正为合法JSON字符串:
String inseamStr = "{\"value\":\"30inch-33inch Shorts\",\"key\":\"31.0\"}";
- 使用
org.json库解析:
import org.json.JSONObject; public class ExtractKeyDouble { public static void main(String[] args) { String inseamStr = "{\"value\":\"30inch-33inch Shorts\",\"key\":\"31.0\"}"; JSONObject jsonObj = new JSONObject(inseamStr); double keyValue = jsonObj.getDouble("key"); // 此时keyValue就是31.0,可直接用于后续逻辑 } }
或使用Jackson库:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class ExtractWithJackson { public static void main(String[] args) throws Exception { String inseamStr = "{\"value\":\"30inch-33inch Shorts\",\"key\":\"31.0\"}"; ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.readTree(inseamStr); double keyValue = node.get("key").asDouble(); } }
方案二:正则表达式直接提取(适配未修正的错误字符串)
如果无法修正原始字符串的语法问题,可通过正则匹配"key":"([0-9.]+)"直接提取数值:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractWithRegex { public static void main(String[] args) { String inseamStr = "{\"value\":\"30inch\"-33inch\" Shorts\",\"key\":\"31.0\"}"; Pattern pattern = Pattern.compile("\"key\":\"([0-9.]+)\""); Matcher matcher = pattern.matcher(inseamStr); if (matcher.find()) { double keyValue = Double.parseDouble(matcher.group(1)); // 得到31.0用于后续场景 } } }
内容的提问来源于stack exchange,提问作者Mahesh Kumar
相关产品推荐
相关产品推荐

