繁体   English   中英

if else 条件在 Regex c# 并返回常量值

[英]if else condition in Regex c# and return constant value

string str="abc"

if(str=="abc")
  return "abc";
else
  return "xyz"

我们可以在 C# 正则表达式中实现这一点吗? 或者另一个条件是,如果输入字符串长度为 3,则返回“abc”,否则返回“xyz”

仅正则表达式:

string str = "abc";

长度 3:

return Regex.IsMatch(str, "^.{3}$") ? "abc" : "xyz";

“ABC”:

return Regex.IsMatch(str, "^abc$") ? "abc" : "xyz";

如果你曾经想做类似的事情

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)}");

Output

abc => xyz
abcd => abcd
ab => ab
123 => 123
abc => abc
abcd => xyz
ab => xyz
123 => 123

我能想到的最简单的:

return str.Length == 3 ? "abc" : "xyz";

或者

return str == "abc" ? "abc" : "xyz";

不需要正则表达式。

对于正则表达式,您可以使用模式: ^.{3}$ ,这意味着匹配任何字符三次, ^匹配字符串的开头, $匹配字符串的结尾:

return Regex.Match("abc", "^.{3}$").Success ? "abc" : "xyz";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM