我正在尝试用C#构建一个小单位转换,我正在解决一个问题。我在互联网上查看了一些示例,但我未能申请
Example text input:
12m
12 m
12.4m
.5m
12.m
我想string num
和string unit
new Regex(@"([d.])([a-zA-Z- -/]+)");
仅当输入具有int
时,这才会给我结果12m
而不是12.m
或12.4m...
我可以变通办法在输入文本中包含.
,但现在输入必须具有.
,小数部分也会发生。
new Regex(@"([d.][.][d.])([a-zA-Z- -/]+)");
尽管我可以做多种可能的情况来处理不同的输入格式,但代码看起来很糟糕。任何帮助,不胜感激。
您可以使用
(d*.?d+|d+.?d*)s*([a-z]+)
查看正则表达式演示
详
(
- 捕获组 1 的开始:d*.?d+
- 0+ 位数字,可选.
、1+ 位数字|
- 或d+.?d*
- 1+ 位数字,可选.
位,0+ 位数字
)
- 捕获组 1 结束s*
- 0+ 空格([a-z]+)
- 捕获组 2:一个或多个小写字母。