我有一个如下字符串: - 我的名字是这样的。我是一名毕业学生。我知道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”没有被保存。
答案 0 :(得分:0)
一种简单的方法是使用不带参数的String.Split
:
string[] words = text.Split();
如果separator参数为null或不包含任何字符, 假设white-space characters是分隔符。
修改根据您上次的修改和我的评论:
你也拆分了sql server,所以如果ListItem.Value是“sql server”的话 与“sql”或“server”不匹配
您:
这是我的问题....你提到的“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);
答案 1 :(得分:0)
取决于你想要做多么复杂,简单的方法就是简单地分割空格字符
"My name is so and so.".Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
如果需要,您可以通过某些正则表达式首先删除任何其他字符,如点或逗号。