首页 文章

C#按另一个字符串拆分字符串

提问于
浏览
547

我一直在使用 Split() 方法来分割字符串,但这只有在你用字符分割字符串时才会起作用 . 有没有办法拆分 string ,另一个字符串是按参数拆分?我已经尝试将分割器转换为字符数组,没有运气 .

换句话说,我想拆分 string

THExxQUICKxxBROWNxxFOX

通过 xx ,返回一个值为的数组:

THE,QUICK,BROWN,FOX

9 回答

  • 98

    要按字符串分割,您必须使用string array overload .

    string data = "THExxQUICKxxBROWNxxFOX";
    
    return data.Split(new string[] { "xx" }, StringSplitOptions.None);
    
  • 0

    有一个带字符串的overload of Split .

    "THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
    

    您可以使用这些StringSplitOptions中的任何一个

    • None - 返回值包括包含空字符串的数组元素

    • RemoveEmptyEntries - 返回值不包含包含空字符串的数组元素

    因此,如果字符串是"THExxQUICKxxxxBROWNxxFOX", StringSplitOptions.None 将在"xxxx"部分的数组中返回空条目,而 StringSplitOptions.RemoveEmptyEntries 则不会 .

  • 6
    Regex.Split(string,"xx")
    

    是我通常这样做的方式 . 当然你需要一个

    using System.Text.RegularExpressions;
    

    但是我一直都需要那个lib .

  • 40

    String.Split的重载是这样的:

    "THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);
    
  • 980

    我通常喜欢使用自己的扩展名:

    string data = "THExxQUICKxxBROWNxxFOX";
    var dataspt = data.Split("xx");
    //>THE  QUICK  BROWN  FOX 
    
    
    //the extension class must be declared as static
    public static class StringExtension
    {   
        public static string[] Split(this string str, string splitter)
        {
            return str.Split(new[] { splitter }, StringSplitOptions.None);
        }
    }
    

    但是,如果Microsoft决定在更高版本中包含此方法重载,则会导致异常 . 这也是微软在此期间未包含此方法的可能原因:至少有一家我工作过的公司在所有C#项目中都使用了这种扩展 .

    如果方法不存在,也可以在运行时有条件地定义该方法 .

  • 56

    以上答案都是正确的 . 我更进一步,通过在String上定义一个扩展方法让C#为我工作:

    public static string[] Split(this string toSplit, string splitOn) {
        return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
    }
    

    这样我可以用简单的方式在任何字符串上调用它,我天真地期望我第一次尝试完成此操作:

    "a big long string with stuff to split on".Split("g str");
    
  • 0
    string data = "THExxQUICKxxBROWNxxFOX";
    
    return data.Replace("xx","|").Split('|');
    

    只需仔细选择替换字符(选择一个不太可能存在于字符串中的字符)!

  • 19

    最简单的方法是使用 String.Replace

    string myString = "THExxQUICKxxBROWNxxFOX";
    mystring = mystring.Replace("xx", ", ");
    

    或者更简单:

    string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
    
  • 5

    这也很容易:

    string data = "THExxQUICKxxBROWNxxFOX";
    string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
    

相关问题