if else условие в Regex c # и возвращаемое значение константы - PullRequest
0 голосов
/ 21 октября 2019
string str="abc"

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

Можем ли мы достичь этого в C # Regex. Или другое условие: если длина входной строки равна 3, вернуть «abc», в противном случае вернуть «xyz»

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

только регулярное выражение:

string str = "abc";

длина 3:

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

"abc":

return Regex.IsMatch(str, "^abc$") ? "abc" : "xyz";
0 голосов
/ 21 октября 2019

Если вы когда-нибудь хотели сделать что-то вроде

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
...