C# 在c语言中从字符串中提取单词#

C# 在c语言中从字符串中提取单词#,c#,C#,我有一个字符串,如下所示:- 我的名字叫某某。我是一名毕业学生。我知道C,C++,java和SQL Server。 如何从这个句子中提取或拆分单词并将其存储在数组中 如何能得到输出:-C,C++,java,SQLServer < /P> 我所做的 我在下拉列表中加载了一组字符串,如“c”、“c++”、“sql server”、“java”。然后我使用了下面的代码 string[] wordsinsentence = sentence.Split();//new char[] { ' ',','

我有一个字符串,如下所示:- 我的名字叫某某。我是一名毕业学生。我知道C,C++,java和SQL Server。 如何从这个句子中提取或拆分单词并将其存储在数组中

<>如何能得到输出:-C,C++,java,SQLServer < /P> 我所做的 我在下拉列表中加载了一组字符串,如“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”无法保存。

一种简单的方法是使用无参数:

string[] words = text.Split();
如果分隔符参数为null或不包含字符, 假定为分隔符

编辑根据您上次的编辑和我的评论:

您还拆分了sql server,因此,如果ListItem.Value为“sql server”,则它将被拆分 与“sql”或“服务器”不匹配

你:

这就是我的问题。。。。你提到的关于“sql server”的那个

您可以使用
Contains
或(如果要比较不区分大小写的话)
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);
“我的名字是某某。我是一名毕业学生。我知道C、C++、java和SQL Server。” string[]words=句子.Split(); var matchingItems=DropDownList1.Items.Cast() 其中(li=>words.Any(w=>li.Text.IndexOf(w,StringComparison.OrdinalIgnoreCase)>=0)); foreach(匹配项中的ListItem项) DropDownList2.Items.Add(item.Text);
这取决于您想要实现的复杂程度,简单的方法是简单地按空格字符拆分

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

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

这个问题似乎离题了,因为谷歌搜索
C#split
会立即返回答案。缺乏任何研究努力和对正在解决的问题的理解令人恐惧。这将有助于我的研究那个我可以根据空格、句点、“:”等进行拆分;这意味着我可以得到输出:C、C++、java、SQL、Server。@ USER 2625672,我认为你应该搜索一个字符串,以寻找特定的标签,如“代码> C++ <代码>,<代码> C++ >代码>等。您的结果将不正确。-1填鸭式回答这样的问题会鼓励用户再次这样做。@user2625672:这是一个linq查询,但如果您不熟悉,也可以使用一个简单的循环。重要的部分是
Text.IndexOf…
,因为它返回找到给定子字符串的索引(单词之一)。如果找不到,该方法将返回
-1
,这就是我选中
=0
的原因。如果不需要区分大小写进行比较,可以将
StringComparison.OrdinalIgnoreCase
替换为
StringComparison.Ordinal
,或者简单地将
IndexOf
替换为
Contains
。我发现此查询存在问题。当我运行代码时,它返回存储在数据库中的所有字符串。我认为没有进行比较。我没有看到明显的错误。是否确定结果是错误的,是否使用了调试器?也许你有一个单字符链接C作为单词。当然,有“C”和“sql server”。发生的情况是,DropDownList 1中显示的每个项目都显示在DropDownList 2中。