Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static IEnumerable<string> CreateRoman(string hiragana, int startIndex)
- {
- var sb = new StringBuilder();
- for (var i = startIndex; i < hiragana.Length; i++)
- {
- switch (hiragana[i])
- {
- case 'あ':
- sb.Append('a');
- break;
- case 'い':
- sb.Append('i');
- break;
- case 'う':
- if (hiragana[i + 1] == '゛')
- {
- var s = sb.ToString();
- foreach (var x in CreateRoman(hiragana, i + 2))
- yield return string.Concat(s, "vu", x);
- char y;
- switch (hiragana[i + 2])
- {
- case 'ぁ':
- y = 'a';
- break;
- case 'ぃ':
- y = 'i';
- break;
- case 'ぇ':
- y = 'e';
- break;
- case 'ぉ':
- y = 'o';
- break;
- default:
- yield break;
- }
- sb.Append('v');
- sb.Append(y);
- s = sb.ToString();
- foreach (var x in CreateRoman(hiragana, i + 3))
- yield return string.Concat(s, x);
- }
- sb.Append('u');
- break;
- case 'え':
- sb.Append('e');
- break;
- case 'お':
- sb.Append('o');
- break;
- }
- }
- yield return sb.ToString();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement