tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルカタカタだけ全角に変換したい
記事No4893
投稿日: 2007/01/24(Wed) 10:01
投稿者こうめ
いつも参考にさせていただいております。
ありがとうございます。

すべての文字列を英数字および記号(/.:!#&・・・等)は半角でカタカナは全角に
統一したいのですが、良い方法はないでしょうか?

今思っているのが、
まずすべてを半角に変換します。
その後、半角カタカナを全角に置き換えようとしています。

        strMoji = StrConv(strMoji, VbStrConv.Narrow)

        '半角カタカナが混じっていないかチェック
        If Regex.IsMatch(strMoji, "[\uFF61-\uFF9F]") Then
            '半角カタカナを全角に変換
            strMoji = Replace(strMoji, "ア", "ア")
            strMoji = Replace(strMoji, "イ", "イ")
            strMoji = Replace(strMoji, "ウ", "ウ")
            strMoji = Replace(strMoji, "エ", "エ")
            strMoji = Replace(strMoji, "オ", "オ")
               :
        End If

他にいい方法があれば、教えてください。
よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: カタカタだけ全角に変換したい
記事No4894
投稿日: 2007/01/24(Wed) 10:24
投稿者花ちゃん
> 統一したいのですが、良い方法はないでしょうか?

下記は、悪い方法だったのでしょうか?
http://hanatyan.sakura.ne.jp/dotnet/han2zen.htm

[ツリー表示へ]
タイトルRe^2: カタカタだけ全角に変換したい
記事No4895
投稿日: 2007/01/24(Wed) 10:43
投稿者こうめ
大変失礼しました。
教えていただいた方法でうまくいきました!!!

ずばり!そのものが「VB.NET Tips一覧」にあったんですね。
掲示板の方ばかり検索していました。
今後、こちらも参考にさせていただきます。

本当にありがとうございました。

[ツリー表示へ]
タイトルRe^3: カタカタだけ全角に変換したい
記事No4973
投稿日: 2007/02/12(Mon) 05:16
投稿者ConvertKana
同様の内容の問題でここにたどり着きました。
コード自体はC#ですが特に依存したことは無いかと思います。

/// <summary>
/// 全角英数記号を半角英数記号に変換
/// 半角カタカナを全角カタカナに変換
/// </summary>
/// <param name="src"></param>
/// <returns></returns>
'Public ConvertKana(ByVal src as String) as String
private string ConvertKana(string src)
{
    src = Strings.StrConv(src, VbStrConv.Narrow, 0);
    MatchCollection mc = Regex.Matches(src,"[。-゜]+", RegexOptions.RightToLeft);

    foreach(Match m in mc)
    {
        src = src.Remove(m.Index,m.Length);
        src = src.Insert(m.Index, Strings.StrConv(m.Value, VbStrConv.Wide, 0));
    }
    return src;
}

[ツリー表示へ]
タイトルRe^4: カタカタだけ全角に変換したい
記事No4975
投稿日: 2007/02/12(Mon) 12:05
投稿者YAS
正規表現を使うのであったら,次のようなものはどうでしょう?

    Public Function ConvertKana(ByVal Src As String)
        Return Regex.Replace(Src, "\p{IsHalfwidthandFullwidthForms}+", New MatchEvaluator(AddressOf RegexMatchEvaluator))
    End Function

    Private Function RegexMatchEvaluator(ByVal M As Match) As String
        Return Strings.StrConv(M.Value, VbStrConv.Wide, 0)
    End Function

[ツリー表示へ]
タイトルRe^5: カタカタだけ全角に変換したい
記事No4976
投稿日: 2007/02/12(Mon) 12:25
投稿者YAS
\p{IsHalfwidthandFullwidthForms}には半角カタカナ以外が含まれていました。
次のようなコードに修正します。
(前回投稿の修正パスワードがわからなくなってしまいました。ごめんなさい。)

    Public Function ConvertKana(ByVal Src As String) As String
        Return Regex.Replace(Src, "[\uFF61-\uFF9F]+", New MatchEvaluator(AddressOf RegexMatchEvaluator))
    End Function

    Private Function RegexMatchEvaluator(ByVal M As Match) As String
        Return Strings.StrConv(M.Value, VbStrConv.Wide, 0)
    End Function

[ツリー表示へ]