' このソースコードは blanco Frameworkによって自動生成されています。
Imports System

Namespace blanco.sample.stringconverter
    ''' <summary>全角カタカナ→全角ひらがなの文字列変換のサンプル。blancoStringConverterの実装には影響しません。</summary>
    Public Class SampleZenKatakana2HiraganaStringConverter

        ''' <summary>文字列置換定義。</summary>
        Public STRING_CONVERT_DEF(,) As String = {{ "ヴ", "う゛" }, { "ァ", "ぁ" }, { "ア", "あ" }, { "ィ", "ぃ" }, { "イ", "い" }, { "ゥ", "ぅ" }, { "ウ", "う" }, { "ェ", "ぇ" }, { "エ", "え" }, { "ォ", "ぉ" }, { "オ", "お" }, { "カ", "か" }, { "ガ", "が" }, { "キ", "き" }, { "ギ", "ぎ" }, { "ク", "く" }, { "グ", "ぐ" }, { "ケ", "け" }, { "ゲ", "げ" }, { "コ", "こ" }, { "ゴ", "ご" }, { "サ", "さ" }, { "ザ", "ざ" }, { "シ", "し" }, { "ジ", "じ" }, { "ス", "す" }, { "ズ", "ず" }, { "セ", "せ" }, { "ゼ", "ぜ" }, { "ソ", "そ" }, { "ゾ", "ぞ" }, { "タ", "た" }, { "ダ", "だ" }, { "チ", "ち" }, { "ヂ", "ぢ" }, { "ッ", "っ" }, { "ツ", "つ" }, { "ヅ", "づ" }, { "テ", "て" }, { "デ", "で" }, { "ト", "と" }, { "ド", "ど" }, { "ナ", "な" }, { "ニ", "に" }, { "ヌ", "ぬ" }, { "ネ", "ね" }, { "ノ", "の" }, { "ハ", "は" }, { "バ", "ば" }, { "パ", "ぱ" }, { "ヒ", "ひ" }, { "ビ", "び" }, { "ピ", "ぴ" }, { "フ", "ふ" }, { "ブ", "ぶ" }, { "プ", "ぷ" }, { "ヘ", "へ" }, { "ベ", "べ" }, { "ペ", "ぺ" }, { "ホ", "ほ" }, { "ボ", "ぼ" }, { "ポ", "ぽ" }, { "マ", "ま" }, { "ミ", "み" }, { "ム", "む" }, { "メ", "め" }, { "モ", "も" }, { "ャ", "ゃ" }, { "ヤ", "や" }, { "ュ", "ゅ" }, { "ユ", "ゆ" }, { "ョ", "ょ" }, { "ヨ", "よ" }, { "ラ", "ら" }, { "リ", "り" }, { "ル", "る" }, { "レ", "れ" }, { "ロ", "ろ" }, { "ヮ", "ゎ" }, { "ワ", "わ" }, { "ヰ", "ゐ" }, { "ヱ", "ゑ" }, { "ヲ", "を" }, { "ン", "ん" }, { "ヵ", "か" }, { "ヶ", "け" } }

        ''' <summary>文字列変換定義に従い、文字列を変換します。</summary>
        ''' <param name="argCheck">変換対象の文字列。</param>
        ''' <returns>文字列変換定義にしたがって変換された文字列。変換定義にひとつも合致しない場合には元の文字列が戻ります。</returns>
        Public Function convert(argCheck As String) As String
            If (argCheck Is Nothing) Then
                Throw New ArgumentException("メソッド[convert]のパラメータ[argCheck]にnullが与えられました。しかし、このパラメータにnullを与えることはできません。")
            End If

            Dim wrkString As String = ""
            For index As Integer = 0 To argCheck.length - 1 Step 0
                Dim look As String = argCheck.Substring(index)
                Dim isFound As Boolean = false
                For indexDef As Integer = 0 To STRING_CONVERT_DEF.length -1
                    Dim wrkStrComp As String = look
                    If (look.length > STRING_CONVERT_DEF(indexDef, 0).Length) Then
                        wrkStrComp = wrkStrComp.substring(0, STRING_CONVERT_DEF(indexDef, 0).Length)
                    End If
                    If (wrkStrComp = STRING_CONVERT_DEF(indexDef, 0)) Then
                        wrkString += STRING_CONVERT_DEF(indexDef, 1)
                        index += STRING_CONVERT_DEF(indexDef, 0).Length
                        isFound = true
                        Exit For
                    End If
                Next
                If (isFound = False) Then
                    wrkString += argCheck.Substring(index, 1)
                    index = index + 1
                End If
            Next

            Return wrkString
        End Function
    End Class
End Namespace
