在C#中的模式后获取子字符串

时间:2018-05-17 21:41:26

标签: c#

想要获取最后一个逗号或最后一个管道之后的子字符串。所以说我有一个字符串可以是:" pipe | delimited | string"或者"逗号,分隔符,字符串",结果应为" string"在这两种情况下。

我在lastindexof上查看C#的子字符串,但我不知道如何为管道和逗号执行此操作。像这样:str.Substring(str.LastIndexOf(' |'或','))。有什么想法吗?

4 个答案:

答案 0 :(得分:8)

有一个很好的功能。

str.LastIndexOfAny(new []{',','|'});

答案 1 :(得分:3)

您可以使用Split方法,将一个或多个分隔符上的字符串拆分为数组,然后选择数组中的最后一项。由于它需要多个字符,因此在调用它时可以同时包含管道和逗号字符:

input.Split('|', ',').Last();  // Splits on both characters and returns the last "chunk"

例如:

private static void Main()
{
    var input = "string|delimited|by|pipes";
    Console.WriteLine(input.Split('|', ',').Last());

    input = "string,delimited,by,commas";
    Console.WriteLine(input.Split('|', ',').Last());

    GetKeyFromUser("\nDone! Press any key to exit...");
}

<强>输出

enter image description here

答案 2 :(得分:0)

Split()方法应该可以解决问题。关于它的唯一事情是它将同时使用两个分隔符,因此,例如,string,delimited|sequence将变成一个看起来像{"string", "delimited", "sequence"}的字符串数组。您可以在Microsoft: How to Parse Strings找到一些例子。这个可能是最相关的。

char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

答案 3 :(得分:-1)

尝试: (&#34;管|分隔|字符串&#34)拆分。(&#39; |&#39)。最后()