首页 > 解决方案 > 分隔符和拆分函数的元素

问题描述

我在https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=net-5.0看到了这个

分隔符的每个元素定义一个单独的分隔符。如果两个分隔符相邻,或者在该实例的开头或结尾找到分隔符,则返回数组中的对应元素包含 Empty。

    string str = "Hello.. How.. are.. you?";
    string[] words = str.Split(new char[] { '.' });
    foreach (string s in words)
    {
        MessageBox.Show(s);
    }

输出是: Hello "" How "" are "" you?

    string str = "Hello. How. are. you?";
    string[] words = str.Split(new char[] { '.' });
    foreach (string s in words)
    {
        MessageBox.Show(s);
    }

输出是:你好,你好吗?

为什么会这样?

标签: c#stringsplit

解决方案


您的拆分字符是.

string[] words = str.Split(new char[] { '.' });

(参数是一个数组,因为您可以提供多个不同的字符进行拆分 - 如果这是您的假设,这并不意味着它会拆分“点数组”)

因此 .NET 在每个点字符上进行相应的拆分:

Hello.. How.. are.. you?
     ^^    ^^    ^^

第一部分是Hello,由第一个点终止。第二部分是一个长度为 0 的字符串,因为它立即被第二个点终止。


推荐阅读