tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル文字列の取り出しについて
記事No9264
投稿日: 2009/08/16(Sun) 16:04
投稿者があ
お世話になっています。
当方VB.NET、WinXPを使用している者です。

現在、開発中のメールソフトにおける予測変換機能を制作しています。
具体的には、TextBoxに文字を入力すると前方一致検索を行い、
あらかじめメモ帳に登録した語句がListBoxに一覧表示されるようにしたいと考えています。

メモ帳には

わたしは,私は
こんにちは,今日は
おねがいします,お願いします
よろしく,宜しく

のように語句を登録し","より右側にある文字のみをListBoxに表示させたいのですが、
メモ帳に登録した左側からの全ての文字を表示させることしか現在できていません。
SubStringメソッドは開始位置や文字数を指定しなければならず、
","の位置にばらつきがあるため、うまく右側のみを取り出すことができませんでした。
何か他に方法はありますでしょうか。
ご指導宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: 文字列の取り出しについて
記事No9265
投稿日: 2009/08/16(Sun) 17:40
投稿者nobu
こんにちは。

> わたしは,私は

1行に半角カンマが必ず1ケのみなら Split 関数が使えるでしょう。

ここのホームページの「 VB.NET 関係専用  トップページ」
左側のメニューの中の「VB.NET Tips一覧」
「主要関数(メソッド)関係」「主要配列操作関数関係の使用例」
「★ Split 関数及びString.Split メソッド」

Dim dat() As String
Dim tmp As String

tmp = "わたしは,私は"
dat = Split(tmp,",")

'dat(0)="わたしは"
'dat(1)="私は"

[ツリー表示へ]
タイトルRe: 文字列の取り出しについて
記事No9267
投稿日: 2009/08/17(Mon) 10:12
投稿者るしぇ
> SubStringメソッドは開始位置や文字数を指定しなければならず、
> ","の位置にばらつきがあるため、うまく右側のみを取り出すことができませんでした。
じゃあ、まずは","の位置を調べればいいのでは?

SubStringメソッドで先頭から1文字ずつ取り出して比較してもいいだろうし、
IndexOf使ってもいいだろうし。

[ツリー表示へ]
タイトルRe^2: 文字列の取り出しについて
記事No9268
投稿日: 2009/08/18(Tue) 23:47
投稿者があ
nobuさん、るしぇさん早速のご返答ありがとうございます。

nobuさんのsplit関数を使用する方法
「VB.NET Tips一覧」とnobuさんのご返答を参考にさせていただきました。

るしぇさんのIndexOfを使用する方法
ListBox1.Items.Add(yosokuList(i).Substring(yosokuList(i).IndexOf(",") + 1))

両方で","より右側のみを表示させることができました。
今後も機会がありましたら、ご指導よろしくお願いいたします。
ありがとうございました!

[ツリー表示へ]