Можно ли использовать только часть строки в инструкции Switch? - PullRequest
2 голосов
/ 09 апреля 2020

savetext - это строка со случайной длиной + "! Command1"

switch (savetext)
{
    case savetext.EndsWith("! Command1"):
        System.Diagnostics.Debug.WriteLine("Test1");
        break;

    case savetext.EndsWith("! Command2"):
        System.Diagnostics.Debug.WriteLine("Test2");
        break;

    default:
        System.Diagnostics.Debug.WriteLine(savetext)
        break;
}

Вывод должен быть "Test1", но мой метод здесь работает не так, как я хочу. Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Поскольку искомый суффикс всегда имеет одинаковую длину, вы можете извлечь его, используя Substring, а затем switch для этого:

String switcher = savetext.Substring(savetext.Length - 10);
switch (switcher)
{
    case "! Command1":
        System.Diagnostics.Debug.WriteLine("Test1");
        break;

    case "! Command2":
        System.Diagnostics.Debug.WriteLine("Test2");
        break;

    default:
        System.Diagnostics.Debug.WriteLine(savetext)
        break;
}
0 голосов
/ 10 апреля 2020

A оператор переключения in C# 8:

var saveText = "111 ! Command1";
var logText = saveText switch
{
    var x when x.EndsWith("! Command1") => "Test 1",
    var x when x.EndsWith("! Command2") => "Test 2",
    var x => x
};

System.Diagnostics.Debug.WriteLine(logText);
...