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#中并返回常量值的主要内容,如果未能解决你的问题,请参考以下文章

if - else 语句

sql中的if else条件[重复]

Java控制结构

魅力python------if - else 语句

#if 条件编译

Powershell if else regex