if else条件在Regex c#中并返回常量值
Posted
技术标签:
【中文标题】if else条件在Regex c#中并返回常量值【英文标题】:if else condition in Regex c# and return constant value 【发布时间】:2020-02-17 11:51:35 【问题描述】:string str="abc"
if(str=="abc")
return "abc";
else
return "xyz"
我们可以在 C# Regex 中实现这一点吗?或者另一个条件是,如果输入字符串长度为 3,则返回“abc”,否则返回“xyz”
【问题讨论】:
你在测试什么?您的代码示例检查身份,您的问题仅考虑字符串长度。 Regex 不返回任何内容,它要么匹配字符串,要么不匹配。代码逻辑用于根据匹配值返回您需要的内容。 【参考方案1】:仅正则表达式:
string str = "abc";
长度 3:
return Regex.IsMatch(str, "^.3$") ? "abc" : "xyz";
“abc”:
return Regex.IsMatch(str, "^abc$") ? "abc" : "xyz";
【讨论】:
3 或更少你可以使用^.0,3$
要求正好是 3 个字符 "如果输入字符串长度为 3"
输入字符串为3或5个字符
@VijayMothukuri 未在问题中定义【参考方案2】:
如果你曾经想做类似的事情
string str="abc"
if(str=="abc") // or str.Lenght == 3
return str; // return original string
else
return "xyz"
你可以只用Regex.Replace
var ifNot = "xyz";
var testStrings = new []"abc", "abcd", "ab", "123";
var pattern = "^abc$"; // not 3
foreach( var s in testStrings)
Console.WriteLine($"s => Regex.Replace(s, pattern, ifNot)");
pattern = "^(.0,2|.4,)$"; // not 3
foreach( var s in testStrings)
Console.WriteLine($"s => Regex.Replace(s, pattern, ifNot)");
输出
abc => xyz
abcd => abcd
ab => ab
123 => 123
abc => abc
abcd => xyz
ab => xyz
123 => 123
【讨论】:
以上是关于if else条件在Regex c#中并返回常量值的主要内容,如果未能解决你的问题,请参考以下文章