我正在尝试在C#中构建一个小单元转换,我正在解决一个问题。我在互联网上查看了一些例子,但我没有申请
Example text input:
12m
12 m
12.4m
.5m
12.m
我想要string num
和string unit
new Regex(@"([\d.])([a-zA-Z- -/]+)");
如果输入有int
like 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组:一个或多个小写字母。