首页新闻找找看学习计划

关于匹配替换字符串

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-27 22:45

原:string  CheckText="len  联想  Think 三星 samsung ";

希望:string CheckNewText="联想笔记本 联想笔记本 联想笔记本 samsung samsung   "

 

字符串里有很多类似不规则的品牌,希望相同的关键词统一成一个品牌;

Frank铭的主页 Frank铭 | 初学一级 | 园豆:3
提问于:2013-08-07 22:57
< >
分享
最佳答案
0
static string RevertLogoText(string checkText)
        {        
            //初始化品牌的关键字字典
            Dictionary<string, string[]> logoDict = new Dictionary<string, string[]>();
            logoDict.Add("联想笔记本", new string[] { "len", "联想", "Think" });
            logoDict.Add("samsung", new string[] { "三星", "samsung" });

            //转换品牌字符串
            System.Text.StringBuilder builder = new StringBuilder();
            foreach (string str in checkText.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
            {
                string logoText = str;
                foreach (KeyValuePair<string, string[]> item in logoDict)
                {
                    if (Array.IndexOf(item.Value, str) >= 0)
                    {
                        logoText = item.Key;
                        break;
                    }
                }
                builder.AppendFormat("{0} ", logoText);
            }
            return builder.ToString();
        }
收获园豆:4
李宝亨 | 小虾三级 |园豆:1433 | 2013-08-08 00:03
其他回答(3)
0

来个循环替换即可。

string[] ss=new string[]{"Len","think","联想"};

string  CheckText="len  联想  Think 三星 samsung ";

foreach(string s in ss)

{

  CheckText=CheckText.Replace(s,"联想笔记本");

}

 

类似于这样的做法

收获园豆:2
幻天芒 | 园豆:36522 (高人七级) | 2013-08-08 00:20
0

这块最好的方法是采用hash来。有点类似于关键词屏蔽,楼主找下园子里 很多。

收获园豆:2
````` | 园豆:14268 (专家六级) | 2013-08-08 09:34
0

java?

api中String类中不是有方法的嘛replaceAll(String regex, String replacement)

收获园豆:1
魏飞 | 园豆:290 (菜鸟二级) | 2013-08-09 19:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册