C#中String.Split()能否同时使用多个StringSplitOptions值?
问题根因
你代码编译失败的原因很简单:StringSplitOptions是标记了[Flags]特性的位枚举,C#中这类枚举组合多个选项时,不需要传入枚举类型数组,直接用按位或运算符|连接多个枚举值即可,这是Flags枚举的标准用法。
string.Split没有接收StringSplitOptions[]数组作为参数的重载,你传数组自然无法匹配到正确的方法签名,才会触发编译错误。
正确单语句实现
直接用|组合两个选项传入即可,完全符合你要的简洁单语句要求:
// myString 为已提前定义的待分割字符串 string[] strs = myString.Split(';', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
实际执行效果
这个写法和官方描述的行为完全一致:
- 分割时会先对每个切分出来的子串做首尾空白字符裁剪
- 裁剪完成后,空字符串、以及仅由空白字符组成的子串都会被从返回结果中移除
- 不需要额外写遍历调用
Trim()、过滤空项的冗余代码
补充说明:这个组合用法在.NET 5、.NET 6及后续版本中均可正常使用,属于官方原生支持的能力。
内容的提问来源于stack exchange,提问作者JSteh
相关产品推荐
相关产品推荐

