Advertisement
Guest User

Untitled

a guest
Aug 10th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. string eng = "qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~ёЁ";
  2. string ru = "йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮеЕеЕ";
  3. for (int i = 0; i < eng.Length; ++i)
  4. if (query.Contains(eng[i]))
  5. query = query.Replace(eng[i], ru[i]);
  6.  
  7. public static class LangConversion
  8. {
  9. private static readonly Dictionary<char, char> engToRu = new Dictionary<char, char>();
  10.  
  11. static LangConversion()
  12. {
  13. var eng = "qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~ёЁ";
  14. var ru = "йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮеЕеЕ";
  15. for (var i = 0; i < eng.Length; i++)
  16. engToRu[eng[i]] = ru[i];
  17. }
  18.  
  19. public static string Fix(string str)
  20. {
  21. var sb = new StringBuilder();
  22. foreach (char c in str)
  23. {
  24. sb.Append(engToRu.ContainsKey(c) ? engToRu[c] : c);
  25. }
  26. return sb.ToString();
  27. }
  28. }
  29.  
  30. public sealed class Replacer
  31. {
  32. private readonly Dictionary<Char, Char> _dictionary;
  33.  
  34. public Replacer(String sourceSymbols, String targetSymbols)
  35. {
  36. if (sourceSymbols.Length != targetSymbols.Length)
  37. throw new NotSupportedException("sourceSymbols.Length != targetSymbols.Length");
  38.  
  39. Int32 count = sourceSymbols.Length;
  40.  
  41. Dictionary<Char, Char> dictionary = new Dictionary<Char, Char>(count);
  42. for (int i = 0; i < count; i++)
  43. dictionary.Add(sourceSymbols[i], targetSymbols[i]);
  44.  
  45. _dictionary = dictionary;
  46. }
  47.  
  48. public void FixCharacters(ref String query)
  49. {
  50. if (String.IsNullOrEmpty(query))
  51. return;
  52.  
  53. unsafe
  54. {
  55. Int32 index = query.Length - 1;
  56. fixed (Char* chPtr = query)
  57. {
  58. while (index >= 0)
  59. {
  60. Char oldChar = chPtr[index];
  61.  
  62. Char newChar;
  63. if (_dictionary.TryGetValue(oldChar, out newChar))
  64. chPtr[index] = newChar;
  65.  
  66. index--;
  67. }
  68. }
  69. }
  70. }
  71. }
  72.  
  73. static void Main(string[] args)
  74. {
  75. String eng = "qwertyuiop[]asdfghjkl;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>`~ёЁ";
  76. String rus = "йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮеЕеЕ";
  77.  
  78. Replacer replacer = new Replacer(eng, rus);
  79.  
  80. for (int i = 0; i < 10; i++)
  81. {
  82. String query = $"Hello World {i}";
  83.  
  84. replacer.FixCharacters(ref query);
  85.  
  86. Console.WriteLine(query); // "Руддщ Цщкдв"
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement