Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. private static IEnumerable<string> CreateRoman(string hiragana, int startIndex)
  2. {
  3. var sb = new StringBuilder();
  4. for (var i = startIndex; i < hiragana.Length; i++)
  5. {
  6. switch (hiragana[i])
  7. {
  8. case 'あ':
  9. sb.Append('a');
  10. break;
  11. case 'い':
  12. sb.Append('i');
  13. break;
  14. case 'う':
  15. if (hiragana[i + 1] == '゛')
  16. {
  17. var s = sb.ToString();
  18. foreach (var x in CreateRoman(hiragana, i + 2))
  19. yield return string.Concat(s, "vu", x);
  20.  
  21. char y;
  22. switch (hiragana[i + 2])
  23. {
  24. case 'ぁ':
  25. y = 'a';
  26. break;
  27. case 'ぃ':
  28. y = 'i';
  29. break;
  30. case 'ぇ':
  31. y = 'e';
  32. break;
  33. case 'ぉ':
  34. y = 'o';
  35. break;
  36. default:
  37. yield break;
  38. }
  39. sb.Append('v');
  40. sb.Append(y);
  41. s = sb.ToString();
  42. foreach (var x in CreateRoman(hiragana, i + 3))
  43. yield return string.Concat(s, x);
  44. }
  45. sb.Append('u');
  46. break;
  47. case 'え':
  48. sb.Append('e');
  49. break;
  50. case 'お':
  51. sb.Append('o');
  52. break;
  53. }
  54. }
  55. yield return sb.ToString();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement