获取该字符串 C# 的一部分

Get a part of that String C#

:barbosza!barbosza@barbosza.tmi.twitch.tv PRIVMSG #pggamesbr :My text

我想要第二个':'之后的部分,但我不能用':'分割,因为有时也包含它。

我猜 "he contains it too" 意味着 "My text contains it too"。

在那种情况下,执行此操作

string toFind = "#pggamesbr :";
string myText = myString.Substring(myString.IndexOf(toFind) + toFind.Length);

您可以拆分并指定最大项目数,以便第二个冒号之后的所有内容都在第三个项目中结束:

string[] parts = str.Split(new char[]{':'}, 3);

第二个冒号之后的部分现在在 parts[2]

我喜欢 Guffa 的简单 Split 解决方案,如果这就是您所需要的,我会接受它。但是,只是为了好玩...

如果您 运行 遇到很多像这样的奇怪情况 -- 您希望用字符串更容易处理的事情 -- 您可以考虑添加扩展方法来处理它们。例如,

using System;

public static MyStringExtentions
{
    public static string After(this string orig, char delimiter)
    {
        int p = orig.indexOf(delimiter);
        if (p == -1)
            return string.Empty;
        else
            return orig.Substring(p + 1);
    }
}

然后,在您现有的代码中,只要您有一个 using 指令来包含对 MyStringExtentions 定义的引用访问:

string afterPart = myString.After(':').After(':');

免责声明:我实际上并没有对此进行测试。可能需要进行一些调整。它可能会被调整为更高效等

同样,对于这个问题,这可能有点矫枉过正。 (请参阅 Guffa 的完美简单答案。)当你发现自己有很多这样的东西并且想要一种通用的方法来使它们可用时,就把它扔掉。

参考。 Extension Methods (C# Programming Guide)