c# - 分隔符和拆分函数的元素
问题描述
我在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);
}
输出是:你好,你好吗?
为什么会这样?
解决方案
您的拆分字符是.
:
string[] words = str.Split(new char[] { '.' });
(参数是一个数组,因为您可以提供多个不同的字符进行拆分 - 如果这是您的假设,这并不意味着它会拆分“点数组”)
因此 .NET 在每个点字符上进行相应的拆分:
Hello.. How.. are.. you?
^^ ^^ ^^
第一部分是Hello
,由第一个点终止。第二部分是一个长度为 0 的字符串,因为它立即被第二个点终止。
推荐阅读
- javascript - ReasonML 对命令式 vanilla JavaScript 的性能
- html - css 更改类的大小不起作用
- php - 带会话的 PHP 登录验证
- typescript - es6 导入。有没有办法在“泛型”中使用“命名空间”作为“类”?
- docker - Symfony4 / Docker:SQLSTATE [HY000] [2002] 连接被拒绝
- r - R中显示的额外类别
- hangouts-chat - 如何@提及使用 REST API 的机器人?
- xml - 使用 XMLTABLE 在 DB2 本机存储过程中解析 XML
- android - DatePickerDialog.OnDateSetListener() 和 MVP
- html - 如何将两个背景图像添加到同一个标题?