1
4

3 に答える 3

3

ルックアップ テーブルなしでこれを行うには、Unicode 正規化を利用できます。

分音記号 (日本語の濁音記号を含む) を持つ文字を正規形 D に正規化すると、分解された基本文字と結合分音記号が得られます。これらの文字の最初の文字を取得するだけで、必要なものが得られます.

name.Normalize(NormalizationForm.FormD).Substring(0, 1)
于 2012-12-07T14:38:29.000 に答える
0
Dim x As New List(Of Char) ''containing the chars to be removed
For Each y In x
    queryresult.Replace(y, "")
Next

あなたがどちらがどれであるかを知っているなら:

Dim phonetics As New List(Of Char)
Dim actuals As New List(Of Char)
For i = 0 To phonetics.Count - 1
     queryresult.Replace(phonetics(i), actuals(i))
Next

別の方法は次のとおりです。

Dim actual As String = queryresult.Split(" ")(0)
于 2012-12-07T01:19:05.830 に答える
0

わかりました、私は方法を考え出しました。カタカナは 1 バイト文字に変換できます。これにより、1 バイトの仮名と、オプションで修飾子 (日本語の「濁点」) 用の 2 番目の 1 バイトが生成されます。

したがって、次のようなチェックを行うことで、変更された仮名をリストから除外できます ( VB) 。

if StrConv(StrConv(kana, VbStrConv.Katakana), VbStrConv.Narrow).Length > 1 then
    ...
end if

長さが 1 より大きい弦はすべて、変更された音です。

変換に関してはややこしくなりますC#が、原理は同じです。ひらがなは半角にできないのでうまくいきませんので、最初にカタカナ変換を行うことが重要です。

于 2012-12-07T04:09:02.773 に答える