none
【C#.NET】如何删除字符串中的指定值 RRS feed

  • 问题

  • 字符串为: 中国,中国人,中国人的,中国人民的

    以上字符串我想只取出第二个字符也就是“中国人” 得出后的效果如 中国,,中国人的,中国人民的

    如果我使用replace("中国人","") 这样的话后面含有"中国人" 的单词也会被替换,所以此方法不妥,请问高手应该如何解决这个问题呢?谢谢!

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年5月24日 8:22

答案

  • 你好,

    我觉得根本问题还是在于你想替换的规则是怎么样的,例如 ”中国人是中国人的中国人民中国人“这个字符串,到底怎么界定哪个”中国人“需要被替换的。如果你具体要处理的情况就是如同你举的例子那样的,那么我觉得肖小勇的回答很好的解决了这个问题。

    如果你是更为复杂的情况,比如我上面的字符串,没有明显分割符号的,那么我们又怎么样才能把”中国人是“和”中国人民“区别开呢? 我想你可以考虑这样处理:

    • 先要有一个词库,定义好包含"中国人"的需要特殊处理词组。
    • 找到这些词的位置。
    • 然后只替换其他位置的”中国人“

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年5月26日 4:06
    版主
  • 大概的代码如下,可呢需要微调

     

          string ss = " 中国,中国人,中国人的,中国人民的";
          string target = "中国人";
    
          int index = ss.IndexOf(target);
    
          // begin = "中国,"
          string begin = ss.Substring(0, index);
          // end = ",中国人的,中国人民的""
          string end = ss.Substring(index + target.Length);
    
          string newString = begin + end;
    
    


    学习学习....
    2011年5月25日 4:00
  • 你好:)

    参考以下示例:

    static void Main(string[] args)
            {

                string s = "中国,中国人,中国人的,中国人民的";
                List<string> strings = new List<string>(s.Split(','));
                strings.RemoveAt(1);
                s = string.Join(",", strings.ToArray());
                s = s.Insert(s.IndexOf(","), ",");
                Console.WriteLine(s);
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月25日 7:15
    版主

全部回复

  • 大概的代码如下,可呢需要微调

     

          string ss = " 中国,中国人,中国人的,中国人民的";
          string target = "中国人";
    
          int index = ss.IndexOf(target);
    
          // begin = "中国,"
          string begin = ss.Substring(0, index);
          // end = ",中国人的,中国人民的""
          string end = ss.Substring(index + target.Length);
    
          string newString = begin + end;
    
    


    学习学习....
    2011年5月25日 4:00
  • 你好:)

    参考以下示例:

    static void Main(string[] args)
            {

                string s = "中国,中国人,中国人的,中国人民的";
                List<string> strings = new List<string>(s.Split(','));
                strings.RemoveAt(1);
                s = string.Join(",", strings.ToArray());
                s = s.Insert(s.IndexOf(","), ",");
                Console.WriteLine(s);
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月25日 7:15
    版主
  • 你好!

    在你原有的替换字符串的基础上加上逗号 Replace("中国人,", ",");

    知识改变命运,奋斗成就人生!
    2011年5月25日 8:44
    版主
  • 你好!

    在你原有的替换字符串的基础上加上逗号 Replace("中国人,", ",");

    知识改变命运,奋斗成就人生!
    如果像这样的话 岂不是所有的有“中国人”字样的词语都会被替换了吗?这与题意不符

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年5月26日 0:35
  • 你好:)

    版主的意思是——“中国人”后面加一个逗号——把“中国人,”替换成单独的一个逗号!

    是可以的。


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月26日 0:54
    版主
  • 你好,

    我觉得根本问题还是在于你想替换的规则是怎么样的,例如 ”中国人是中国人的中国人民中国人“这个字符串,到底怎么界定哪个”中国人“需要被替换的。如果你具体要处理的情况就是如同你举的例子那样的,那么我觉得肖小勇的回答很好的解决了这个问题。

    如果你是更为复杂的情况,比如我上面的字符串,没有明显分割符号的,那么我们又怎么样才能把”中国人是“和”中国人民“区别开呢? 我想你可以考虑这样处理:

    • 先要有一个词库,定义好包含"中国人"的需要特殊处理词组。
    • 找到这些词的位置。
    • 然后只替换其他位置的”中国人“

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2011年5月26日 4:06
    版主
  • 你好!

    在你原有的替换字符串的基础上加上逗号 Replace("中国人,", ",");

    知识改变命运,奋斗成就人生!

    这样做是不可以的,会把其他含有“中国人”的字符串也一起删除了,与我题意不符

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年6月3日 0:11