gpt4 book ai didi

c# - 正则表达式不起作用

转载 作者:行者123 更新时间:2023-11-30 23:20:10 25 4
gpt4 key购买 nike

我收到了一些这种格式的字符串:

"tel:+441234567890;ext=7890"

为了提取不同的数字,我通常使用这些正则表达式模式,它们返回显示的输出:

解析电话号码

public static string ParseTelephoneNumber(string rawInput)
{
var temp = Regex.Replace(rawInput, ";.*", "");
return Regex.Replace(temp, ".*:", "");
}

+441234567890

解析扩展

public static string ParseExtension(string rawInput)
{
return Regex.Replace(rawInput, ".*=", "");
}

7890


这似乎在 Visual Studio 2012Visual Studio 2015 中都能正常工作。

但是,如果此代码作为 InfoPath 2013 表单代码的一部分在 VS 2012 中运行,我将看到以下结果:

解析扩展

tel:+441234567890

解析电话号码

+441234567890

这是什么原因? InfoPath 是否使用不同的引擎来计算正则表达式?

最佳答案

您的原始字符串在 InfoPath 中是否不可变?我假设不是,这就是您看到此行为的原因,
如果不是,您确定 InfoPath 以相同的格式将字符串传递给您的C#代码或者你能试试下面这样的东西吗?

public static Tuple<string, string> ParseTelephoneAndExtension(string rawInput)
{
var match = Regex.Match(rawInput, @"tel:(\+\d+);ext=(\d+)");
if (match.Success)
{
return new Tuple<string, string>(match.Groups[1].Value, match.Groups[2].Value);
}
return new Tuple<string, string>(null, null);
}

此外,正则表达式不依赖于 VS,它更像是一个 .NET 引擎。只要以相同的格式发送字符串,就应该得到相同的输出。

关于c# - 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39871957/

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