c#从字符串中删除目标字符串

dapeng925 2016-07-12 09:58:45
有人名字符串:张一,王二,李三,王小汪,莉莉 ,这个字符串格式是这样用,分割,长短不定,人名位置不定。
我要删除某个名字,这个要删除的名字是个变量,位置也不确定(开头,中间,结尾)
最好用正则实现(我不会。。。)
...全文
730 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
千杯不醉-sen 2016-07-13
  • 打赏
  • 举报
回复

            string names = "张一,王二,李三,王小汪,莉莉";
            string filter = "李三";
            string res = names.Replace(filter, "").Replace(",,", ",");
千杯不醉-sen 2016-07-13
  • 打赏
  • 举报
回复

            string names = "张一,王二,李三,王小汪,莉莉";
            string filter = "李三";
            string res = names.Replace(filter + ",", "").Replace("," + filter, "");
Poopaye 2016-07-13
  • 打赏
  • 举报
回复
string names = "张一,王二,李三,王小汪,莉莉"; string filter = "李三"; var result =string.Join(",", names.Split(',').Where(x => x != filter));
xuzuning 2016-07-13
  • 打赏
  • 举报
回复
我也知道的,截图中就是这样 可以考虑在替换后 Trim(",")
  • 打赏
  • 举报
回复
@"(,)?\b张三\b(,)?"
要在替换方法里面判断m.Groups[1].Success和m.Groups[2].Success,只有当两者都匹配时,替换为逗号,否则替换为空 算了,直接上代码吧
string[] arr = { "大一,张三,李四,王五", "大一,张三", "张三,李四" };
foreach (var str in arr)
{
    Console.WriteLine(Regex.Replace(str, @"(,)?\b张三\b(,)?", m =>
    {
        if (m.Groups[1].Success && m.Groups[2].Success)
        {
            return ",";
        }
        return string.Empty;
    }));
}
dapeng925 2016-07-13
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
            var s = "张一,王二,李三,王小汪,莉莉";
            //正则
            Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "张一"), ""));
            Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "莉莉"), ""));
            Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "李三"), ""));

            //字符串+集合
            var r = s.Split(',').Except(new string[] { "王二" });
            Console.WriteLine(string.Join(",", r));
可行,就是如果删除的是最后一个,逗号去不掉。比如第二行,去掉 莉莉 那个,最后还会有个逗号,这个怎么办?
xuzuning 2016-07-13
  • 打赏
  • 举报
回复
            var s = "张一,王二,李三,王小汪,莉莉";
//正则
Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "张一"), ""));
Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "莉莉"), ""));
Console.WriteLine(Regex.Replace(s, string.Format("(?<=^|,){0}(,|$)", "李三"), ""));

//字符串+集合
var r = s.Split(',').Except(new string[] { "王二" });
Console.WriteLine(string.Join(",", r));
tcmakebest 2016-07-13
  • 打赏
  • 举报
回复
这个代码没用正则

        static void Main()
        {
            string s = RemoveNameA("a,b,c,d,e", "c");
            Debug.WriteLine(s);
            string t = RemoveNameB("a,b,c,d,e", "c,e");
            Debug.WriteLine(t);
        }
        // 删除一组名字
        private static string RemoveNameB(string source, string names)
        {
            List<string> list = new List<string>(source.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
            List<string> del = new List<string>(names.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
            list.RemoveAll(x => del.Contains(x));
            return string.Join(",", list.ToArray());
        }
        // 只能删除一个名称
        private static string RemoveNameA(string source, string name)
        {
            return AddDuoHao(source).Replace(AddDuoHao(name), ",").Trim(',');
        }

        private static string AddDuoHao(string s)
        {
            return "," + s + ",";
        }
threenewbee 2016-07-12
  • 打赏
  • 举报
回复
用replace string s = "张一,王二,李三,王小汪,莉莉"; string del = ",李三"; s = s.Replace(del, "");'

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧