半角カナを全角カナに変換・全角英数字を半角英数字に変換

DartPad

コード

void main() {
  final samples = [
    'テスト', //全角カナ
    'テスト', //半角カナ
    'テスト', //全角カナ「テ」 + 半角カナ「スト」
    'TEST1', //全角英数字
  ];

  for (final sample in samples) {
    final convertedText = convertText(input: sample);
    print('sample: $sample');
    print('convertedText: $convertedText');
    print('++++++++');
  }
}

String convertText({required String input}) {
  final fullWidthKana = getFullWidthKana(input: input);
  final halfWidthAlphanumeric =
      getHalfWidthAlphanumericCharacters(input: fullWidthKana);
  return halfWidthAlphanumeric;
}

// 半角カナを全角カナに変換
String getFullWidthKana({required String input}) {
  final fullWidthKana =
      input.replaceAllMapped(RegExp('[ア-ン゙゚ーァ-ョ]゙?゚?'), (Match match) {
    final result = kanaMap[match.group(0)!];
    return result ?? match.group(0)!;
  });
  return fullWidthKana;
}

// 全角英数字を半角英数字に変換
String getHalfWidthAlphanumericCharacters({required String input}) {
  final halfWidthAlphanumericCharacters = input.replaceAllMapped(RegExp('[A-Za-z0-9]'), (Match match) {
    final result = alphanumericMap[match.group(0)!];
    return result ?? '';
  });
  return halfWidthAlphanumericCharacters.isEmpty ? input : halfWidthAlphanumericCharacters;
}

final kanaMap = {
  'ア': 'ア',
  'イ': 'イ',
  'ウ': 'ウ',
  'エ': 'エ',
  'オ': 'オ',
  'カ': 'カ',
  'キ': 'キ',
  'ク': 'ク',
  'ケ': 'ケ',
  'コ': 'コ',
  'サ': 'サ',
  'シ': 'シ',
  'ス': 'ス',
  'セ': 'セ',
  'ソ': 'ソ',
  'タ': 'タ',
  'チ': 'チ',
  'ツ': 'ツ',
  'テ': 'テ',
  'ト': 'ト',
  'ナ': 'ナ',
  'ニ': 'ニ',
  'ヌ': 'ヌ',
  'ネ': 'ネ',
  'ノ': 'ノ',
  'ハ': 'ハ',
  'ヒ': 'ヒ',
  'フ': 'フ',
  'ヘ': 'ヘ',
  'ホ': 'ホ',
  'マ': 'マ',
  'ミ': 'ミ',
  'ム': 'ム',
  'メ': 'メ',
  'モ': 'モ',
  'ヤ': 'ヤ',
  'ユ': 'ユ',
  'ヨ': 'ヨ',
  'ラ': 'ラ',
  'リ': 'リ',
  'ル': 'ル',
  'レ': 'レ',
  'ロ': 'ロ',
  'ワ': 'ワ',
  'ヲ': 'ヲ',
  'ン': 'ン',
  'ヴ': 'ヴ',
  'ガ': 'ガ',
  'ギ': 'ギ',
  'グ': 'グ',
  'ゲ': 'ゲ',
  'ゴ': 'ゴ',
  'ザ': 'ザ',
  'ジ': 'ジ',
  'ズ': 'ズ',
  'ゼ': 'ゼ',
  'ゾ': 'ゾ',
  'ダ': 'ダ',
  'ヂ': 'ヂ',
  'ヅ': 'ヅ',
  'デ': 'デ',
  'ド': 'ド',
  'バ': 'バ',
  'ビ': 'ビ',
  'ブ': 'ブ',
  'ベ': 'ベ',
  'ボ': 'ボ',
  'パ': 'パ',
  'ピ': 'ピ',
  'プ': 'プ',
  'ペ': 'ペ',
  'ポ': 'ポ',
  'ァ': 'ァ',
  'ィ': 'ィ',
  'ゥ': 'ゥ',
  'ェ': 'ェ',
  'ォ': 'ォ',
  'ッ': 'ッ',
  'ャ': 'ャ',
  'ュ': 'ュ',
  'ョ': 'ョ',
  'ー': 'ー',
};

final alphanumericMap = {
  'A': 'A',
  'B': 'B',
  'C': 'C',
  'D': 'D',
  'E': 'E',
  'F': 'F',
  'G': 'G',
  'H': 'H',
  'I': 'I',
  'J': 'J',
  'K': 'K',
  'L': 'L',
  'M': 'M',
  'N': 'N',
  'O': 'O',
  'P': 'P',
  'Q': 'Q',
  'R': 'R',
  'S': 'S',
  'T': 'T',
  'U': 'U',
  'V': 'V',
  'W': 'W',
  'X': 'X',
  'Y': 'Y',
  'Z': 'Z',
  'a': 'a',
  'b': 'b',
  'c': 'c',
  'd': 'd',
  'e': 'e',
  'f': 'f',
  'g': 'g',
  'h': 'h',
  'i': 'i',
  'j': 'j',
  'k': 'k',
  'l': 'l',
  'm': 'm',
  'n': 'n',
  'o': 'o',
  'p': 'p',
  'q': 'q',
  'r': 'r',
  's': 's',
  't': 't',
  'u': 'u',
  'v': 'v',
  'w': 'w',
  'x': 'x',
  'y': 'y',
  'z': 'z',
  '0': '0',
  '1': '1',
  '2': '2',
  '3': '3',
  '4': '4',
  '5': '5',
  '6': '6',
  '7': '7',
  '8': '8',
  '9': '9',
};

参考


この記事が気に入ったらサポートをしてみませんか?