gpt4 book ai didi

c# - 有没有不使用正则表达式来比较字母数字的简单方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:49 26 4
gpt4 key购买 nike

我正在尝试比较有时前面有字符 A-Z 的字符串,以查看它是否存在于列表中。

所以比较像 225225. 这样的值,看看它是否存在于这样的值列表中

225.0
235.9
A23.8
B56.0
345.8

我的正则表达式在 225. 上失败(带有句点)。它应该匹配列表中的第一个,因为它们是相同的数值。

if (codesList[i].IndexOf(".") < 0)
{
code = new System.Text.RegularExpressions.Regex("\\b" + codesList[i].Replace(".", "[.]") + "(?![.])\\b");
}
else
{
code = new System.Text.RegularExpressions.Regex("\\b" + codesList[i].Replace(".", "[.]") + "\\b");
}

if (code.IsMatch(stringToFind))
{
found = true;
}

所以我想通过转换为十进制来使用精确的数值。但如果值前面有一个字符,那将不起作用。

编辑 -> 除了想查看字符串是否与列表中的字母数字值匹配之外,我不确定我还能澄清多少。但它必须匹配数值(暂时忽略字母字符),一旦匹配,字母字符必须完全匹配。

所以 A57.0 应该与 A57 匹配。和A57但是 A57.01 不会与 A57 匹配。或 A57 也不会 Z57。

与常规数值相同234.0 必须等于 234 和 234。

最佳答案

首先,您应该从要比较的字符串中删除所有非数字字符。

然后转换为数字并进行比较。

    bool found = false;

foreach(var code in codesList)
{
Regex rgx = new Regex(@"[^0-9\-\.]");
code = rgx.Replace(code, "");

double num;

if(double.TryParse(code, num))
{
// floating point number comparison should be done against a delta,
// adjust as needed
if(Math.Abs(num - numberToFind) < 0.000001d)
{
found = true;
break;
}
}
}

关于c# - 有没有不使用正则表达式来比较字母数字的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791880/

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