VB.NET如何将英文数字字符串“One”转换为对应的整数1
报错原因
Int32.Parse()和Convert.ToInt32()仅支持转换阿拉伯数字格式的字符串(例如"1"),无法直接识别英文数字单词"One",因此触发格式错误异常。如果你的输入预期本应为阿拉伯数字字符串,可先检查numbers(index)取到的实际值是否存在前后空格、特殊字符等不符合数字格式的内容。
实现方案
场景1:需要转换英文数字单词为对应整数
如果你的需求就是将英文拼写的数字转为整数,最简便且性能可控的方式是预定义映射字典实现转换,可根据自己的业务范围扩展映射内容:
// 预定义英文数字与整数的映射,忽略大小写匹配 var numberMap = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase) { {"Zero", 0}, {"One", 1}, {"Two", 2}, // 按需扩展更多数字、单位词的映射 }; string inputStr = numbers(index).Trim(); if (numberMap.TryGetValue(inputStr, out int BeginningValue)) { // 转换成功,直接使用BeginningValue即可 } else { // 自定义无法识别输入的处理逻辑 }
如果需要处理"Twenty One"、"One Hundred"这类组合式的英文数字,可在映射字典基础上补充单位词(Hundred、Thousand等)的识别逻辑,拆分单词后叠加计算即可得到最终数值。
场景2:输入预期为阿拉伯数字字符串
如果你的业务预期numbers(index)取到的应该是类似"1"的阿拉伯数字字符串,可先对输入做清洗后再转换:
// 先去除前后空格、特殊符号后再做转换 BeginningValue = Int32.Parse(numbers(index).Trim()); // 也可使用TryParse避免抛出异常 if (Int32.TryParse(numbers(index).Trim(), out int BeginningValue)) { // 转换成功逻辑 }
内容的提问来源于stack exchange,提问作者thePattiestOfKakes
相关产品推荐
相关产品推荐

