C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

CompareOptions 列挙型について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■87259 / inTopicNo.1)  CompareOptions 列挙型について
  
□投稿者/ aaa (1回)-(2018/05/02(Wed) 00:11:22)

分類:[.NET 全般] 

2018/05/02(Wed) 15:05:23 編集(投稿者)
VS2017 VBです。

https://msdn.microsoft.com/ja-jp/library/system.globalization.compareoptions(v=vs.110).aspx
ここから使用いしています。

文字を漢字など(含む)テキストボックスに一文字いれると
大文字、小文字、カタカナなどは出来ますが、漢字も出来ますか?

コード
Imports System.Globalization

Form1
    Private list As New List(Of String)()
Form_Load
list.Add("あ")
list.Add("嗚")
list.Add("ア")
End Sub

 Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        'テキストを書き換えるたびに、
        'リストの内容を先頭一致でフィルタリング
        Dim ci = New CultureInfo("ja-jp").CompareInfo
        Dim opt As CompareOptions
        opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
        opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
        opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない
        opt = opt Or CompareOptions.IgnoreNonSpace '文字列比較で分音文字などの結合の分音文字を無視することを示します。
        opt = opt Or CompareOptions.IgnoreSymbols '文字列の比較が空白文字が区切り記号、通貨記号、パーセント記号、数学記号、アンパサンド、やなどの記号を無視することを示します。

        Dim txt As String = TextBox3.Text

        ComboBox1.DataSource = list.Where(
Function(s)
    Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
End Function).ToArray()
    End Sub
End Crass

例:あという文字をテキストボックスにあを入れるとlist.Addであだけをcomboboxに表示されるんですが
漢字も表示させたいです。

お願いします。

引用返信 編集キー/
■87260 / inTopicNo.2)  Re[1]: CompareOptions 列挙型について
□投稿者/ Hongliang (639回)-(2018/05/02(Wed) 02:01:06)
できません。
漢字は複数の読み方があるので嗚の字をア(ex.嗚呼)にマッチさせるのかオ(ex.嗚咽)にマッチさせるのか、をはじめとして、色々難しい問題があります。

リストの内容がユーザ入力を介さないものであるなら、表示文字列と読み文字列をセットで持つようにするのがいいんじゃないかと思いますが。
引用返信 編集キー/
■87267 / inTopicNo.3)  Re[2]: CompareOptions 列挙型について
□投稿者/ aaa (2回)-(2018/05/02(Wed) 15:06:39)
No87260 (Hongliang さん) に返信
> リストの内容がユーザ入力を介さないものであるなら、表示文字列と読み文字列をセットで持つようにするのがいいんじゃないかと思いますが。

わかりました。ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ