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()); }
/// <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);
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); }
/// <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);