鍍金池/ 問答/C#  HTML/ C# 如何將一個內(nèi)容里的某些字母轉(zhuǎn)換成另一種字母

C# 如何將一個內(nèi)容里的某些字母轉(zhuǎn)換成另一種字母

比如有一篇英文文章,我想把文章內(nèi)容里的26個字母里的每一個字母替代另一種字母。
比如:
英文內(nèi)容:Try Firefox with the bookmarks, history and passwords from another browser.
這里的t字母換a,rs,.....以此類推 文章所有字母一次性替換另一種自定義的字母。

回答
編輯回答
逗婦惱

思路是有的,將字符串轉(zhuǎn)換成字符數(shù)組,再定義一個字母表的字典,字典的key為替換前的字符char,字典的value為替換后的字符char,給你寫了一個簡單的實(shí)現(xiàn),運(yùn)行效果如圖:

圖片描述

示例代碼:

static void Main(string[] args)
        {
            var str = "Try Firefox with the bookmarks, history and passwords from another browser.";
            var strArr = str.ToArray();
            var result = Converter(strArr);
            Console.WriteLine($"初始字符串:{str}");
            Console.WriteLine($"替換后的字符串:{string.Join("", result)}");
            Console.ReadKey();
        }

        public static char[] Converter(char[] originalCharArray)
        {
            var dict = new Dictionary<char, char> {
                { 'a','s'},
                { 'b','t'},
                {'c','u'},
                {'d','v'},
                {'e','w'},
                {'f','x'},
                {'g','y'},
                {'h','z'},
                {'i','a'},
                {'j','b'},
                {'k','c'},
                {'l','d'},
                {'m','e'},
                {'n','f'},
                {'o','g'},
                {'p','h'},
                {'q','i'},
                {'r','j'},
                {'s','k'},
                {'t','l'},
                {'u','m'},
                {'v','n'},
                {'w','o'},
                {'x','p'},
                {'y','q'},
                {'z','r'},
            };
            var result = new List<char>();
            for (int i = 0; i < originalCharArray.Length; i++)
            {
                var c = originalCharArray[i];
                var isUpperCase = Char.IsUpper(c);
                if (Char.IsLetter(c))
                {
                    c = dict[Char.ToLower(c)];
                    if (isUpperCase)
                    {
                        c = Char.ToUpper(c);
                    }
                }
                result.Add(c);
            }
            return result.ToArray();
        }
2017年1月24日 06:06
編輯回答
懶洋洋

正則 + LINQ

string str = "Try Firefox with the bookmarks, history and passwords from another browser.";
//            Tjq Fajwxgp oalz lzw tggcesjck, zaklgjq sfv hskkogjvk xjge sfglzwj tjgokwj.
var dict = new Dictionary<string, string> {
    {"a","s"},{"b","t"},{"c","u"},{"d","v"},{"e","w"},{"f","x"},{"g","y"},
    {"h","z"},{"i","a"},{"j","b"},{"k","c"},{"l","d"},{"m","e"},{"n","f"},
    {"o","g"},{"p","h"},{"q","i"},
    {"r","j"},{"s","k"},{"t","l"},{"y","q"},{"z","r"}
};
            
var regex  = new System.Text.RegularExpressions.Regex(String.Join("|", dict.Keys));
var result = regex.Replace(str, m => dict[m.Value]); 
2017年5月29日 15:11