gpt4 book ai didi

c# - 确定 double.Parse 使用的字符数

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:32 25 4
gpt4 key购买 nike

这是一个简单的问题,但我找不到解决它的任何函数。我需要一种方法来确定使用了多少个字符来从字符串中解析 double 。

我想获取字符串的其余部分,并通过在符号字符串表中进行简单查找来使用它来确定它是什么测量单位。


更新

我已将答案授予 Olivier Jacot-Descombes,因为他拥有最完整的 Regex,并且用我自己关于如何使用 Regex 的答案击败了我。我看到这个答案的唯一缺陷是没有考虑不同文化的逗号和点交换位置(我在我的答案中确实考虑到了这一点,尽管它看起来有点乱)。

但是,我将要实现的实际解决方案不会使用 Regex。我仍然给出答案的原因是因为基本上我问错了问题。我认为 Regex 答案是我提出的问题的最佳解决方案。

我想出的解决方案是遍历可用单位并使用 inputStr.EndsWith(unitStr) 与字符串进行比较,当我得到肯定的匹配时,我会立即知道通过从测试字符串中减去单位字符串的长度得到数字的长度,然后我可以使用 double.Parse() 处理剩下的内容(修剪后)。

最佳答案

您可以让 Regex 返回匹配项,这样您就不需要两次传递。

var parseNumUnit = new Regex(
@"(?<num>(\+|-)?([0-9,]+(\.)?[0-9]*|[0-9,]*(\.)?[0-9]+)((e|E)(\+|-)?[0-9]+)?)\s*(?<unit>[a-zA-Z]*)"
);

Match match = parseNumUnit.Match("+13.234e-3m");
string number = match.Groups["num"].Value; // "+13.234e-3"
string unit = match.Groups["unit"].Value; // "m"

这里

(?<name>expression)    captures the expression in a group named "name".

我的数字正则表达式非常复杂,允许像 "+13.234e-3""12.34"".25" 这样的数字>、“10.”“23,503.14”。如果您的数字格式更简单,则可以简化正则表达式。

关于c# - 确定 double.Parse 使用的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52431448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com