【问题标题】:if else condition in Regex c# and return constant valueif else条件在Regex c#中并返回常量值
【发布时间】:2020-02-17 11:51:35
【问题描述】:
string str="abc"

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

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

【问题讨论】:

  • 你在测试什么?您的代码示例检查身份,您的问题仅考虑字符串长度。
  • Regex 不返回任何内容,它要么匹配字符串,要么不匹配。代码逻辑用于根据匹配值返回您需要的内容。

标签: c# regex vb.net c#-4.0


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多