如何在VB.NET中将含字母与整数的字符串解析为对应变量?
字符串解析简便方案
不用逐个字符处理,正则表达式是最简洁高效的解决方式,直接匹配前缀非数字部分和两个数字段即可。
Python 实现
使用正则表达式匹配固定格式,一步拆分出目标变量:
import re def parse_target_string(s): # 正则模式:匹配开头非数字 + 数字 + 短横线 + 数字 pattern = re.compile(r'^([^\d]+)(\d+)-(\d+)$') match_result = pattern.match(s) if match_result: str_var = match_result.group(1) int_var1 = int(match_result.group(2)) int_var2 = int(match_result.group(3)) return str_var, int_var1, int_var2 # 格式不匹配时抛出异常或返回默认值 raise ValueError("输入字符串不符合指定格式") # 测试示例 test_samples = ["A1-8", "AN9-16", "OUT16-24", "CARD32-40"] for sample in test_samples: sv, iv1, iv2 = parse_target_string(sample) print(f"StrVar = \"{sv}\"\nIntVar1 = {iv1}\nIntVar2 = {iv2}\n")
JavaScript 实现
同样用正则快速拆分:
function parseTargetString(s) { const regex = /^([^\d]+)(\d+)-(\d+)$/; const match = s.match(regex); if (match) { return { strVar: match[1], intVar1: parseInt(match[2], 10), intVar2: parseInt(match[3], 10) }; } throw new Error("输入字符串格式错误"); } // 测试 const testSamples = ["A1-8", "AN9-16", "OUT16-24", "CARD32-40"]; testSamples.forEach(sample => { const res = parseTargetString(sample); console.log(`StrVar = "${res.strVar}"\nIntVar1 = ${res.intVar1}\nIntVar2 = ${res.intVar2}\n`); });
模式说明
正则模式^([^\d]+)(\d+)-(\d+)$的含义:
^([^\d]+):匹配字符串开头的所有非数字字符,作为前缀变量(\d+):匹配第一个连续数字段,转成整数-:匹配分隔用的短横线(\d+)$:匹配结尾的第二个连续数字段,转成整数
内容的提问来源于stack exchange,提问作者UnderHill Studio
相关产品推荐
相关产品推荐

