首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式组字符串替换c#

正则表达式组字符串替换c#
EN

Stack Overflow用户
提问于 2014-09-10 01:22:21
回答 1查看 94关注 0票数 0

目标字符串为"qwer on chat: qwer chat"。我想将已有的qwer .. etc替换为编码文本(md5) //。但我不想将"on chat:"替换为文本编码,而“聊天”这个词是要编码的。预期的结果是"{md5}{md5}{md5}{md5} on chat: {md5}{md5}{md5}{md5} {md5}{md5}{md5}{md5}"。我如何在C#中做到这一点?谢谢。

代码语言:javascript
复制
    public static string GetUniqueKey(int maxSize)
    {
        char[] chars = new char[62];
        chars =
        "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray();
        byte[] data = new byte[1];
        RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
        crypto.GetNonZeroBytes(data);
        data = new byte[maxSize];
        crypto.GetNonZeroBytes(data);
        StringBuilder result = new StringBuilder(maxSize);
        foreach (byte b in data)
        {
            result.Append(chars[b % (chars.Length)]);
        }
        string l = result.ToString();
        return "{"+l+"}";
    }

    static IDictionary<string, string> map = new Dictionary<string, string>()
        {
        {"q",GetUniqueKey(5)},
        {"w",GetUniqueKey(5)},
        {"e",GetUniqueKey(5)},
        {"r",GetUniqueKey(5)},
        {"a",GetUniqueKey(5)},
        {"c",GetUniqueKey(5)},
        {"h",GetUniqueKey(5)},
        {"t",GetUniqueKey(5)},
        {"o",GetUniqueKey(5)},
        {"n",GetUniqueKey(5)},
        };

    public void ccc(string str)
    {
    var regex = new Regex(String.Join("|", map.Keys.Select(k => Regex.Escape(k))));
    string newStr = regex.Replace(str ,m => map[m.Value]);
    richTextBox1.AppendText(Environment.NewLine + newStr);
    }
EN

Stack Overflow用户

发布于 2014-09-10 01:36:13

不需要正则表达式,您可以只使用String.SplitString.Join

代码语言:javascript
复制
    string s = "qwer on chat: qwer chat";
    var parts = s.Split(new string[] {"on chat:"}, StringSplitOptions.RemoveEmptyEntries);
    for (int i = 0; i < parts.length; i++) {
        // MD5 encode each part here replacing the value in the array
    }
    var final = string.Join("on chat:", parts);

如果你一定要使用正则表达式,你可以这样做:

代码语言:javascript
复制
    var r = new Regex(@"^(.*)(on chat:)(.*)$");
    var n = r.Replace(s, m=> md5(m.Groups[1].Value) + m.Groups[2].Value + md5(m.Groups[3].Value));

其中,md5是一个接受字符串并返回md5编码字符串的函数。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25750521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档