有没有办法在 String.Split() 中使用多个 StringSplitOptions ?

JSt*_*teh 12 .net c#

我想用分隔符“;”分割字符串 并应用StringSplitOptions.TrimEntriesStringSplitOptions.RemoveEmptyEntries。我尝试使用 StringSplitOptions 数组,例如

// myString already defined elsewhere    
StringSplitOptions[] options = { StringSplitOptions.TrimEntries, StringSplitOptions.RemoveEmptyEntries };
string[] strs = myString.Split(';', options);
Run Code Online (Sandbox Code Playgroud)

但这不能编译。我知道我可以稍后使用 Trim() 删除空格,但更喜欢干净的单语句解决方案,并且似乎您应该能够使用多个(两个)选项。在StringSplitOptions enum的页面中,它提到

如果同时指定RemoveEmptyEntries 和TrimEntries,则仅由空白字符组成的子字符串也会从结果中删除。

页面的其余部分和 String.Split() 方法的页面都没有给出任何有关如何它们一起指定的指示。

我可能会错过一些简单的东西,因为我对 C# 相当陌生并且是自学的。如果这篇文章的格式不好或者是重复的问题,请原谅,这是 Stack Overflow 上的第一篇文章。我尝试搜索这个问题,但没有看到任何结果。预先感谢您可以提供任何指导?

Ser*_*nov 26

StringSplitOptions枚举带有[Flags]属性标记,可以通过|运算符组合多个Flags。

using System;
                    
public class Program
{
    public static void Main()
    {
        var myString = " ; some test     ; here; for;   test   ;   ;   ;";
        string[] strs = myString.Split(';', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);        
        foreach (var str in strs)
        {
          Console.WriteLine($"-{str}-");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

-some test-
-here-
-for-
-test-
Run Code Online (Sandbox Code Playgroud)

或者

StringSplitOptions splitOptions = StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries;
string[] strs = myString.Split(';', splitOptions);  
Run Code Online (Sandbox Code Playgroud)

  • @JSteh不,你没有偏离基础,两个枚举值的按位或正是它们的数值的按位或,在这方面你是100%正确的。 (3认同)