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