首页 > 解决方案 > 将单词从字符串添加到列表c#

问题描述

我无法将字符串中的单词添加到我的列表中。

List<string> list = new List<string>();

string StringSorter = "Hello I like C#";

            for (int i = 0; i < StringSorter.Length; i++)
            {
                string[] splitter = StringSorter.Split(" ");
                list.Add(splitter[i]);
            }

我希望每个单词都在列表中的索引中。它一直工作到字符串的末尾到达崩溃的地方,并说“索引超出了数组的范围”。我根本不知道如何解决这个问题。

标签: c#list

解决方案


您的问题是,您遍历字符串中的每个字符并尝试为每次迭代拆分字符串。

您只需要将字符串拆分一次。

你可以这样做:

string myString = "Hello I like C#";
List<string> list = new List<string>();

string[] splittedStringArray = myString.Split(' ');

foreach (string stringInArray in splittedStringArray) {
    list.Add(stringInArray);
}

正如评论中已经提到的,您可以使用 linq 扩展方法ToList()将您的拆分函数的返回数组直接转换为这样的列表:

string myString = "Hello I like C#";

List<string> list = myString.Split(' ').ToList(); 

您可以做的另一件事是使用列表的AddRange()函数。因此,您无需将返回的数组转换为列表。如果您想多次执行此操作,这也将变得更容易:

string myStringOne = "Hello I like C#";
string myStringTwo = "I copied the top comment for my answere";

List<string> list = new List<string>();

list.AddRange(myStringOne.Split(' '));
list.AddRange(myStringTwo.Split(' '));

推荐阅读