如何拆分目标字符串并提取数值存储至float类型变量?
提取字符串中数值并转为float类型的实现方法
核心思路
先拆分字符串获取键值对,提取数值部分后转换为float类型;也可通过正则表达式直接匹配所有数值内容,再完成类型转换。以下提供几种主流编程语言的实现方案:
C# 实现
- 步骤:按逗号分割字符串得到单个键值对,再按冒号拆分提取数值,最后用
float.Parse或float.TryParse完成转换
string s = "PH_Value:7.539999961853027,Nitrate:1.0099999904632568,DO:10.229999542236328,Conductivity:6777.990234375,TSS:43.65999984741211"; // 分割为单个键值对 string[] keyValuePairs = s.Split(','); // 存储到列表 List<float> valueList = new List<float>(); foreach (var pair in keyValuePairs) { string[] parts = pair.Split(':'); if (parts.Length == 2 && float.TryParse(parts[1], out float num)) { valueList.Add(num); } } // 单独存储到指定变量 float phValue = float.Parse(keyValuePairs[0].Split(':')[1]); float nitrate = float.Parse(keyValuePairs[1].Split(':')[1]); float doValue = float.Parse(keyValuePairs[2].Split(':')[1]); float conductivity = float.Parse(keyValuePairs[3].Split(':')[1]); float tss = float.Parse(keyValuePairs[4].Split(':')[1]);
Python 实现
- 方案一:字符串分割法
s = "PH_Value:7.539999961853027,Nitrate:1.0099999904632568,DO:10.229999542236328,Conductivity:6777.990234375,TSS:43.65999984741211" # 拆分后提取数值并转换 value_list = [float(pair.split(':')[1]) for pair in s.split(',')] # 单独赋值给变量 ph_value, nitrate, do_value, conductivity, tss = value_list
- 方案二:正则匹配法(直接提取所有数值)
import re s = "PH_Value:7.539999961853027,Nitrate:1.0099999904632568,DO:10.229999542236328,Conductivity:6777.990234375,TSS:43.65999984741211" # 匹配所有小数格式的数值 value_list = [float(num) for num in re.findall(r'\d+\.\d+', s)]
Java 实现
- 步骤:分割字符串后提取数值部分,通过
Float.parseFloat完成类型转换
public class ValueExtractor { public static void main(String[] args) { String s = "PH_Value:7.539999961853027,Nitrate:1.0099999904632568,DO:10.229999542236328,Conductivity:6777.990234375,TSS:43.65999984741211"; String[] keyValuePairs = s.split(","); float[] values = new float[keyValuePairs.length]; // 批量提取存储 for (int i = 0; i < keyValuePairs.length; i++) { String[] parts = keyValuePairs[i].split(":"); if (parts.length == 2) { values[i] = Float.parseFloat(parts[1]); } } // 单独存储到变量 float phValue = Float.parseFloat(keyValuePairs[0].split(":")[1]); float nitrate = Float.parseFloat(keyValuePairs[1].split(":")[1]); float doValue = Float.parseFloat(keyValuePairs[2].split(":")[1]); float conductivity = Float.parseFloat(keyValuePairs[3].split(":")[1]); float tss = Float.parseFloat(keyValuePairs[4].split(":")[1]); } }
内容的提问来源于stack exchange,提问作者Vinit
相关产品推荐
相关产品推荐

