예제 #1
0
        public static string HiraganaToKatakana(string input)
        {
            if (input is null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            var builder = new StringBuilder();

            foreach (var character in input)
            {
                // Short circuit to avoid incorrect codeshift for 'ー' and '・'
                if (SpecialCharacterChecker.IsLongDash(character) || SpecialCharacterChecker.IsSlashDot(character))
                {
                    builder.Append(character);
                }
                else if (HiraganaChecker.IsHiragana(character))
                {
                    // Shift charcode.
                    var katakanaCode      = (character - CharacterRanges.HiraganaStart) + CharacterRanges.KatakanaStart;
                    var katakanaCharacter = (char)katakanaCode;
                    builder.Append(katakanaCharacter);
                }
                else
                {
                    // Pass non-hiragana chars through
                    builder.Append(character);
                }
            }
            return(builder.ToString());
        }
예제 #2
0
 /// <summary>
 /// Test if input is hiragana.
 /// </summary>
 /// <param name="input">Input.</param>
 /// <returns>A value indicating whether input is hiragana.</returns>
 public static bool IsHiragana(string input) => HiraganaChecker.IsHiragana(input);
예제 #3
0
 private static string GetTokenType(char character, bool compact = false)
 {
     if (compact)
     {
         if (IsJaNumber(character))
         {
             return(TokenTypes.Other);
         }
         if (IsEnNumber(character))
         {
             return(TokenTypes.Other);
         }
         if (IsEnSpace(character))
         {
             return(TokenTypes.English);
         }
         if (SpecialCharacterChecker.IsEnglishPunctuation(character))
         {
             return(TokenTypes.Other);
         }
         if (IsJaSpace(character))
         {
             return(TokenTypes.Japanese);
         }
         if (SpecialCharacterChecker.IsJapanesePunctuation(character))
         {
             return(TokenTypes.Other);
         }
         if (JapaneseChecker.IsJapanese(character))
         {
             return(TokenTypes.Japanese);
         }
         if (RomajiChecker.IsRomaji(character))
         {
             return(TokenTypes.English);
         }
     }
     else
     {
         if (IsJaSpace(character))
         {
             return(TokenTypes.Space);
         }
         if (IsEnSpace(character))
         {
             return(TokenTypes.Space);
         }
         if (IsJaNumber(character))
         {
             return(TokenTypes.JapaneseNumber);
         }
         if (IsEnNumber(character))
         {
             return(TokenTypes.EnglishNumber);
         }
         if (SpecialCharacterChecker.IsEnglishPunctuation(character))
         {
             return(TokenTypes.EnglishPunctuation);
         }
         if (SpecialCharacterChecker.IsJapanesePunctuation(character))
         {
             return(TokenTypes.JapanesePunctuation);
         }
         if (KanjiChecker.IsKanji(character))
         {
             return(TokenTypes.Kanji);
         }
         if (HiraganaChecker.IsHiragana(character))
         {
             return(TokenTypes.Hiragana);
         }
         if (KatakanaChecker.IsKatakana(character))
         {
             return(TokenTypes.Katakana);
         }
         if (JapaneseChecker.IsJapanese(character))
         {
             return(TokenTypes.Japanese);
         }
         if (RomajiChecker.IsRomaji(character))
         {
             return(TokenTypes.English);
         }
     }
     return(TokenTypes.Other);
 }
예제 #4
0
 /// <summary>
 /// Test if input is hiragana.
 /// </summary>
 /// <param name="input">Input.</param>
 /// <returns>A value indicating whether input is hiragana.</returns>
 public static bool IsHiragana(char input) => HiraganaChecker.IsHiragana(input);