【问题标题】:Get a part of that String C#获取该字符串 C# 的一部分
【发布时间】:2016-03-20 03:25:05
【问题描述】:
:barbosza!barbosza@barbosza.tmi.twitch.tv PRIVMSG #pggamesbr :My text

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

【问题讨论】:

  • 在此基础上考虑使用LastIndexOfSubstring
  • 如果这是您想要的最后一个,您是否调查过LastIndexOf 方法?
  • 我认为 OP 意味着实际消息可能包含:,在这种情况下,您可能需要第一个索引(假设您删除了第一个字符)。

标签: c# string irc


【解决方案1】:

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

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

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

【讨论】:

  • 不错,不知道这个。
【解决方案2】:

我猜“他也包含它”的意思是“我的文本也包含它”。

在这种情况下,这样做

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

【讨论】:

    【解决方案3】:

    我喜欢 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)

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      相关资源
      最近更新 更多