我正在尝试将字符串;用作分隔符。
我的输出很奇怪,为什么返回数组的末尾有一个空字符串?
string emails = "bitebari@gmail.com;abcd@gmail.com;";
string[] splittedEmails = emails.TrimEnd().Split(';');
foreach (var email in splittedEmails)
{
Console.WriteLine("Value is :" + email);
}
Run Code Online (Sandbox Code Playgroud)
控制台输出如下所示:
值为:bitebari@gmail.com
值为:abcd@gmail.com
价值是:
string.Split默认情况下,该方法不会删除空条目,无论如何,您可以通过为它提供StringSplitOptions. 尝试将您的方法与StringSplitOptions.RemoveEmptyEntries参数一起使用。
string[] splittedEmails = emails.Split(';', StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
实际上,您应该尝试传递;给您的TrimEnd方法,否则它会截断空格。因此,您的字符串将保留;在末尾。这将导致以下结果:
string[] splittedEmails = emails.TrimEnd(';').Split(';');
Run Code Online (Sandbox Code Playgroud)
上述两种解决方案都有效,因为性能差异不应该那么高,所以确实是首选。
至少在 C# 中,这种行为被认为是“标准的”,让我引用MSDN来说明这一点。
此行为使表示表格数据的逗号分隔值 (CSV) 文件等格式变得更容易。连续的逗号代表一个空白列。
您可以传递可选的 StringSplitOptions.RemoveEmptyEntries 参数以排除返回数组中的任何空字符串。对于返回集合的更复杂处理,您可以使用 LINQ 来操作结果序列。
也没有任何特殊情况。
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |