全角半角変換

  1. 4 days ago

    Yoshimasa K

    Mar 24 Pre-Release Testers, Xojo Pro

    Xojo 2019 r3.1を使っています。
    文字列の全角・半角変換はどのようにしたらいいですか?

    例えば、
    123 → 123
    です。

  2. Hironobu S

    Mar 24 Pre-Release Testers, Xojo Pro Japan
    Private Function Zen2Han(source As String) as String
      Dim ZenkakuNumber() As String = Array("0","1","2","3","4","5","6","7","8","9")
      Dim HankakuNumber() As String = Array("0","1","2","3","4","5","6","7","8","9")
      
      If source.Len <> 1 Then
        MsgBox "全角→半角変換対象は1文字です。"
        Return source
      End If
      
      For i As Integer = 0 To ZenkakuNumber.Ubound
        If ZenkakuNumber(i) = source Then
          Return HankakuNumber(i)
        End If
      Next
      
      Return source
    End Function
    
  3. Yoshimasa K

    Mar 24 Pre-Release Testers, Xojo Pro

    ありがとうございます。
    なるほど、せめて perl でいう tr のようなものがあればと思いましたが、自前で地道に処理するしかなさそうですね。
    今回、ひらがな→カタカナ変換も含める必要があったので以下のようなメソッドを作ってしのぎました。
    (汗

    Var result As String
    result = zenString
    result = result.ReplaceAll("␣", " ")
    result = result.ReplaceAll("1", "1")
    result = result.ReplaceAll("2", "2")
    result = result.ReplaceAll("3", "3")
    result = result.ReplaceAll("4", "4")
    result = result.ReplaceAll("5", "5")
    result = result.ReplaceAll("6", "6")
    result = result.ReplaceAll("7", "7")
    result = result.ReplaceAll("8", "8")
    result = result.ReplaceAll("9", "9")
    result = result.ReplaceAll("0", "0")
    result = result.ReplaceAll("あ", "ア")
    result = result.ReplaceAll("い", "イ")
    result = result.ReplaceAll("う", "ウ")
    result = result.ReplaceAll("え", "エ")
    result = result.ReplaceAll("お", "オ")
    result = result.ReplaceAll("か", "カ")
    result = result.ReplaceAll("き", "キ")
    result = result.ReplaceAll("く", "ク")
    result = result.ReplaceAll("け", "ケ")
    result = result.ReplaceAll("こ", "コ")
    result = result.ReplaceAll("さ", "サ")
    result = result.ReplaceAll("し", "シ")
    result = result.ReplaceAll("す", "ス")
    result = result.ReplaceAll("せ", "セ")
    result = result.ReplaceAll("そ", "ソ")
    result = result.ReplaceAll("た", "タ")
    result = result.ReplaceAll("ち", "チ")
    result = result.ReplaceAll("つ", "ツ")
    result = result.ReplaceAll("て", "テ")
    result = result.ReplaceAll("と", "ト")
    result = result.ReplaceAll("な", "ナ")
    result = result.ReplaceAll("に", "ニ")
    result = result.ReplaceAll("ぬ", "ヌ")
    result = result.ReplaceAll("ね", "ネ")
    result = result.ReplaceAll("の", "ノ")
    result = result.ReplaceAll("は", "ハ")
    result = result.ReplaceAll("ひ", "ヒ")
    result = result.ReplaceAll("ふ", "フ")
    result = result.ReplaceAll("へ", "ヘ")
    result = result.ReplaceAll("ほ", "ホ")
    result = result.ReplaceAll("ま", "マ")
    result = result.ReplaceAll("み", "ミ")
    result = result.ReplaceAll("む", "ム")
    result = result.ReplaceAll("め", "メ")
    result = result.ReplaceAll("も", "モ")
    result = result.ReplaceAll("や", "ヤ")
    result = result.ReplaceAll("ゆ", "ユ")
    result = result.ReplaceAll("よ", "ヨ")
    result = result.ReplaceAll("ら", "ラ")
    result = result.ReplaceAll("り", "リ")
    result = result.ReplaceAll("る", "ル")
    result = result.ReplaceAll("れ", "レ")
    result = result.ReplaceAll("ろ", "ロ")
    result = result.ReplaceAll("わ", "ワ")
    result = result.ReplaceAll("を", "ヲ")
    result = result.ReplaceAll("ん", "ン")
    result = result.ReplaceAll("が", "ガ")
    result = result.ReplaceAll("ぎ", "ゴ")
    result = result.ReplaceAll("ぐ", "ギ")
    result = result.ReplaceAll("げ", "ゲ")
    result = result.ReplaceAll("ご", "ゴ")
    result = result.ReplaceAll("ざ", "ザ")
    result = result.ReplaceAll("じ", "ジ")
    result = result.ReplaceAll("ず", "ズ")
    result = result.ReplaceAll("ぜ", "ゼ")
    result = result.ReplaceAll("ぞ", "ゾ")
    result = result.ReplaceAll("だ", "ダ")
    result = result.ReplaceAll("ぢ", "ヂ")
    result = result.ReplaceAll("づ", "ヅ")
    result = result.ReplaceAll("で", "デ")
    result = result.ReplaceAll("ど", "ド")
    result = result.ReplaceAll("ば", "バ")
    result = result.ReplaceAll("び", "ビ")
    result = result.ReplaceAll("ぶ", "ブ")
    result = result.ReplaceAll("べ", "ベ")
    result = result.ReplaceAll("ぼ", "ボ")
    result = result.ReplaceAll("ぱ", "パ")
    result = result.ReplaceAll("ぴ", "ピ")
    result = result.ReplaceAll("ぷ", "プ")
    result = result.ReplaceAll("ぺ", "ペ")
    result = result.ReplaceAll("ぽ", "ポ")
    result = result.ReplaceAll("ぁ", "ァ")
    result = result.ReplaceAll("ぃ", "ィ")
    result = result.ReplaceAll("ぅ", "ゥ")
    result = result.ReplaceAll("ぇ", "ェ")
    result = result.ReplaceAll("ぉ", "ォ")
    result = result.ReplaceAll("ゃ", "ャ")
    result = result.ReplaceAll("ゅ", "ュ")
    result = result.ReplaceAll("ょ", "ョ")
    result = result.ReplaceAll("っ", "ッ")
    result = result.ReplaceAll("A", "A")
    result = result.ReplaceAll("B", "B")
    result = result.ReplaceAll("C", "C")
    result = result.ReplaceAll("D", "D")
    result = result.ReplaceAll("E", "E")
    result = result.ReplaceAll("F", "F")
    result = result.ReplaceAll("G", "G")
    result = result.ReplaceAll("H", "H")
    result = result.ReplaceAll("I", "I")
    result = result.ReplaceAll("J", "J")
    result = result.ReplaceAll("K", "K")
    result = result.ReplaceAll("L", "L")
    result = result.ReplaceAll("M", "M")
    result = result.ReplaceAll("N", "N")
    result = result.ReplaceAll("O", "O")
    result = result.ReplaceAll("P", "P")
    result = result.ReplaceAll("Q", "Q")
    result = result.ReplaceAll("R", "R")
    result = result.ReplaceAll("S", "S")
    result = result.ReplaceAll("T", "T")
    result = result.ReplaceAll("U", "U")
    result = result.ReplaceAll("V", "V")
    result = result.ReplaceAll("W", "W")
    result = result.ReplaceAll("X", "X")
    result = result.ReplaceAll("Y", "Y")
    result = result.ReplaceAll("Z", "Z")
    result = result.ReplaceAll("a", "a")
    result = result.ReplaceAll("b", "b")
    result = result.ReplaceAll("c", "c")
    result = result.ReplaceAll("d", "d")
    result = result.ReplaceAll("e", "e")
    result = result.ReplaceAll("f", "f")
    result = result.ReplaceAll("g", "g")
    result = result.ReplaceAll("h", "h")
    result = result.ReplaceAll("i", "i")
    result = result.ReplaceAll("j", "j")
    result = result.ReplaceAll("k", "k")
    result = result.ReplaceAll("l", "l")
    result = result.ReplaceAll("m", "m")
    result = result.ReplaceAll("n", "n")
    result = result.ReplaceAll("o", "o")
    result = result.ReplaceAll("p", "p")
    result = result.ReplaceAll("q", "q")
    result = result.ReplaceAll("r", "r")
    result = result.ReplaceAll("s", "s")
    result = result.ReplaceAll("t", "t")
    result = result.ReplaceAll("u", "u")
    result = result.ReplaceAll("v", "v")
    result = result.ReplaceAll("w", "w")
    result = result.ReplaceAll("x", "x")
    result = result.ReplaceAll("y", "y")
    result = result.ReplaceAll("z", "z")
    result = result.ReplaceAll("+", "+")
    result = result.ReplaceAll("-", "-")
    result = result.ReplaceAll("/", "/")
    result = result.ReplaceAll("*", "*")
    result = result.ReplaceAll("=", "=")
    result = result.ReplaceAll("_", "_")
    result = result.ReplaceAll("(", "(")
    result = result.ReplaceAll(")", ")")
    result = result.ReplaceAll("[", "[")
    result = result.ReplaceAll("]", "]")
    result = result.ReplaceAll("{", "{")
    result = result.ReplaceAll("}", "}")
    result = result.ReplaceAll("<", "<")
    result = result.ReplaceAll(">", ">")
    result = result.ReplaceAll("_", "_")
    result = result.ReplaceAll("#", "#")
    result = result.ReplaceAll("$", "$")
    result = result.ReplaceAll("%", "%")
    result = result.ReplaceAll("&", "&")
    //result = result.ReplaceAll("”", """) // fmm...
    result = result.ReplaceAll("’", "'")
    result = result.ReplaceAll("‘", "`")
    result = result.ReplaceAll("@", "@")
    result = result.ReplaceAll(";", ";")
    result = result.ReplaceAll(":", ":")
    result = result.ReplaceAll(",", ",")
    result = result.ReplaceAll(".", ".")
    result = result.ReplaceAll("?", "?")
    result = result.ReplaceAll("!", "!")
    result = result.ReplaceAll("|", "|")
    result = result.ReplaceAll("^", "^")
    return result
    
    
    
  4. 3 days ago

    Hironobu S

    Mar 25 Pre-Release Testers, Xojo Pro Japan

    試してはいませんが,Xojoの正規表現関連はPCRE library 8.33を使用していますので,RegExを用いれば少ないコードで変換が可能かと思います。

or Sign Up to reply!