首页 > 解决方案 > C# - 将句子分成标记

问题描述

将句子拆分为标记。例如,这对于搜索引擎很有用。

有几个规则:

引号中的多个单词必须包含在同一个标​​记中

这个“巨大的测试”是没有意义的=>这个,巨大的测试,是,没有意义的

连字符的单词也包含在同一个标​​记中。用几个连字符(破折号)书写的单词,或者在开头或结尾有一个连字符的单词被放置在单独的标记中。

Suzie Smith-Hopper 测试--连字符 => Suzie,Smith-Hopper,test,连字符。

我的尝试:

label.Text = "";
string s = "I like-it 'very very'";
string[] arr = Regex.Split(s, @"(\s)|(')");

foreach (var item in arr)
{
    label.Text += item + ", ";
}

但这对我不起作用

标签: c#.netregex

解决方案


以下当然不是有效的,但它会工作:

步骤 1. 解析文件(或输入字符串),并将用引号括起来的短语中的所有空格替换为某个字符,例如“+”。至于多连字符,请用空格(' ')替换它们。

步骤 2. 按空格 ' ' 分割。任何“可标记”的物品都将是一个标记……我认为。

Step 3. 返回,替换所有特殊字符(如上面的'+'),并用空格('')替换。数组中的每个项目都代表一个令牌。


推荐阅读