修剪<list>字符串C#中的空格

时间:2017-03-01 21:13:11

标签: c#

我正在处理一个应用程序,其中我在一个字符串中有多个ID,我从';'以我的视图传递。
所以这就是它的样子&#34; P171; P172&#34;。

  if (ModelState.IsValid)
    {
        hiddenIDnumber= hiddenIDnumber.Trim();
        List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();

        foreach (string str in listStrLineElements)

问题是,当我分割我的hiddenIDnumber时,即使我有两个数字,我得到3的计数并且返回""(我相信这是一个空的空间)。 当我使用断点时,我得到&#34; P171&#34;,&#34; P172&#34;和&#34;&#34;。 由于我的FK约束,这导致我的程序失败。

有没有办法克服这个问题并以某种方式&#34;修剪&#34;空间出来了?

5 个答案:

答案 0 :(得分:7)

使用string.Split的另一个重载,允许您忽略空条目。例如:

List<string> listStrLineElements = hiddenIDnumber
    .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
    .ToList();

答案 1 :(得分:2)

我想说,一种方法是使用String Split Options。对于String.Split,有一个带有两个参数的重载,即它就像

myString.Split(new [] {';'}, StringSplitOptions.RemoveEmptyEntries);

这应该可以防止数组中只有空字符串的任何条目。

答案 2 :(得分:0)

var listStrLineElements = hiddenIDnumber.Split(new char[]{';'}, StringSplitOptions.RemoveEmptyEntries);

使用参数StringSplitOptions.RemoveEmptyEntries自动从结果列表中删除空条目。

答案 3 :(得分:0)

您可以尝试:

IList<string> listStrLineElements = hiddenIDnumber.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

为了便于阅读,我更喜欢new [] { ';' },并将其返回到界面(IList<string>)。

答案 4 :(得分:0)

分割时,您最终会得到; s加1的数量。由于你的评论提到你有2 ; s,你的列表中会得到3:在第一个分号之前,第一个和第二个之间,以及第二个分号之后。你没有得到一个空白的空间,因为你在string.Empty

之后没有任何内容,所以你得到;
if (ModelState.IsValid)
{
    hiddenIDnumber= hiddenIDnumber.Trim(";");
    List<string> listStrLineElements = hiddenIDnumber.Split(';').ToList();

    foreach (string str in listStrLineElements)

这样你摆脱了;在你分手之前的最后,你不会得到一个空字符串。