-8

我有如下字符串:- 我的名字是某某。我是一名毕业学生。我知道 c、c++、java 和 sql server。

如何从这句话中提取或拆分单词并将其存储在数组中?

如何获得如下输出:- c、c++、java、sql server

我做了什么

我将一组字符串(如“c”、“c++”、“sql server”、“java”)加载到下拉列表中。然后我使用了以下代码。

string[] wordsinsentence = sentence.Split();//new char[] { ' ',',' ,';','\t','\n', '\r'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string word in wordsinsentence)
{
    foreach (ListItem li in DropDownList1.Items)
    {
        if (li.Value == word)
        {
            DropDownList2.Items.Add(new ListItem(li.Value));
        }
    }
}

输出将只有“c++”和“java”。“sql server”和“c”没有被保存。

4

2 回答 2

3

一个简单的方法是使用String.Split不带参数:

string[] words = text.Split();

如果 separator 参数为 null 或不包含任何字符, 则假定空白字符为分隔符。

根据您上次的编辑和我对此的评论进行编辑

你也拆分了 sql server,所以如果 ListItem.Value 是“sql server”它不匹配“sql”或“server”

你:

那是我的问题....您提到的有关“ sql server”的问题。

您可以使用Containsor (如果您想比较不区分大小写)IndexOf

string sentence = "My name is so and so. I am a graduation student. I know c, c++, java and sql server.";
string[] words = sentence.Split();

var matchingItems = DropDownList1.Items.Cast<ListItem>()
    .Where(li => words.Any(w => li.Text.IndexOf(w, StringComparison.OrdinalIgnoreCase) >= 0));
foreach(ListItem item in matchingItems)
    DropDownList2.Items.Add(item.Text);
于 2013-08-26T15:05:35.840 回答
0

取决于你想让它有多复杂,简单的方法是简单地分割空格字符

"My name is so and so.".Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);

如果需要,您可以通过一些正则表达式首先删除任何其他字符,如点或逗号。

于 2013-08-26T15:06:12.263 回答