输入一句中文 比如:
"发帖咨询问题前,建议你搜索,看是不是已经有人解决了这个问题。"使用正则表达式,如何将 "问题" 这个词找出来, 如果有多个词呢, 比如要查出"问题","建议"
能不能一次查出来?
"发帖咨询问题前,建议你搜索,看是不是已经有人解决了这个问题。"使用正则表达式,如何将 "问题" 这个词找出来, 如果有多个词呢, 比如要查出"问题","建议"
能不能一次查出来?
解决方案 »
- 解决方案资源管理器
- 发布的网站在客户机上出现的问题?在我机器上是没问题的
- 清楚WIN 2003里的临时文件
- 使用Dotfuscator Community Edition后,无法加载global。谢谢。
- 紧急求助:.net 调用webservice 接口没问题,php调用 webservice接口时候出现 中文乱码的问题。
- 做asp.net网站开发,用什么操作系统比较好??
- asp.net 2.0中GridView中的LinkButton的CommandArgument怎样取得当前行的RowIndex?
- 对于 App_Code 文件夹下面的类有没有办法指定程序集名称?
- 关于一个Gridview的复杂问题
- 很少用用户空间,问一个可能比较弱质的东西,呵呵,如何对ascx传参数
- 有没有好的开发asp.net的框架
- NET更新太快了,我们还能2.0多久?
string[] array = {"问题","建议"};
使用正则表达式,将content 包含的 array里面的关键字找出来.
因为content有时候会很大,有几千个, 用正则表达式的话会快一些.
你上次帮我解决的问题, 如果字符串内容是英文的话就可以,因为单词都会用空格格开, 但是中文之间就没有空格,http://community.csdn.net/Expert/topic/5744/5744452.xml?temp=.5265619
比如这个例子
"发帖咨询问题前,建议你搜索,看是不是已经有人解决了这个问题。"
这里有两个“问题”,一个“建议”,如果要返回的是“问题,建议”,而不是“问题,建议,问题”,用正则方法还要去下重复词,而用IndexOf,有多少个关键词就要遍历多少次,各有优缺点,效率上不好说,可能要根据数据源来判断
{
StringBuilder result = new StringBuilder();
StringBuilder sb = new StringBuilder("(");
foreach (string s in array)
{
sb.Append(s);
sb.Append("|");
} string reg = sb.ToString().TrimEnd('|') + ")"; MatchCollection mc = Regex.Matches(content, reg, RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
result.Append(m.Value);
result.Append(",");
} return result.ToString().TrimEnd(',');
}
调用:
string content = "发帖咨询问题前,建议你搜索,看是不是已经有人解决了这个问题。";
string[] arrStr = new string[] { "问题","建议" };
richTextBox2.Text = GetContainWords(content, arrStr);输出:
问题,建议,问题
string[] arrStr = new string[] { "boy", "boys", 女性","男人" };content 里面的boy123不应该找出来的.
{
StringBuilder result = new StringBuilder();
StringBuilder sb = new StringBuilder("(?<![a-z0-9])(");
foreach (string s in array)
{
sb.Append(s);
sb.Append("|");
} string reg = sb.ToString().TrimEnd('|') + ")(?![a-z0-9])"; MatchCollection mc = Regex.Matches(content, reg, RegexOptions.IgnoreCase);
foreach (Match m in mc)
{
result.Append(m.Value);
result.Append(",");
} return result.ToString().TrimEnd(',');
}