c# - 为什么 C# split 给我一个以空行结尾的数组?

标签 c#

我有以下表达式:

"<p>What ?</p>\n<pre>Starting Mini</pre>"

当我执行如下拆分时:

   var split = content
      .Split(new[] { "<pre>", "</pre>" }, StringSplitOptions.None);

然后它给了我三个条目:

"<p>What ?</p>\n"
"Starting Mini"
""

为什么它在第三个条目中给出一个空行,我该如何避免这种情况?

最佳答案

“原因”很简单:输入(如果您不删除空条目)将始终在出现分隔符时“拆分”,因此如果分隔符出现 n 次,则数组长度为 n+1。特别是,这实际上让您知道它们在原始字符串中的位置(尽管使用多个分隔符时,它不会让您知道哪个出现在何处)。

例如,一个简单的例子(没有任何转义的 csv 等):

string[] arr = input.Split(','); // even if something like "a,b,c,d,"
// which allows...
int numberOfCommas = arr.Length - 1;
string original = string.Join(",", arr);

如前所述,解决方法是使用 RemoveEmptyEntries

关于c# - 为什么 C# split 给我一个以空行结尾的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12776916/

相关文章:

C# 枚举 - 可能有双重 ID

c# - Azure 函数 blob 绑定(bind)

c# - 如何通过 StackExchange.Redis 删除 redis 中的所有键值

c# - 为什么 C# 出的泛型类型参数会违反协变?

c# - quartz 作业商店与事件数据有关?

c# - InvalidCastException,COM 组件上的 QueryInterface 调用失败

c# - Roslyn 中的代理缓存行为更改

c# - NHibernate Query<T>、Get<T> 和 Load<T> 的区别

c# - 从 List<string[]> 中获取唯一字符串的计数到字典中

c# - 5 秒后自动隐藏图像