VB2005を先日DLしたばかりです。
テキストボックスの内容を1行ずつ取得したいと思っています。
Dim names As String()
names = TextBoxBefor.Text.Split(vbNewLine)
こんな感じで分割しようと思ったのですが、2つ目以降のnamesの先頭に改行文字が入ってしまいます。
上記の方法でうまく取得する方法、もしくはこの方法に限らず、1行ずつ取得するいい方法を教えてください。よろしくお願いします。
2005の資料がないので2003を継承していると思って考えてみました。
・確かVisualBasicにSplit()がありませんでしたっけ?
それなら、文字列を区切りとして分割できると思います。
・[String].Replace(vbNewLine,vbNullChar).Split(vbNullChar)
と、強引に…?
ちなみに、.NET2003の[String].Split()メソッドは、
char[]を受け取るメソッドのようです。
.NET2005でも変わっていないのなら、
Stringが暗黙の変換が行われChar[]になったのかもしれませんね。
ガッさんありがとうございます。
>ちなみに、.NET2003の[String].Split()メソッドは、
>char[]を受け取るメソッドのようです。
その通りでした。VB2005でもそうでした。
(ちなみに2005からは.NETという名称は使わなくなったそうです)
vbNewLineをで分割してもらうつもりが、「CR」か「LF」のどちらか
で分割してくれと要求していたのですね。
教えていただいた方法はどちらもうまくいきました。
VB6以前の文法はできれば使いたくないという思いもありましたが、
一旦置換というのはどうも気持ちが悪いので前者を選択しました。
どうもありがとうございました。
いまは環境がないので試せないけど
vb2005だと、string[] を受け取るバージョンが
追加されているようです。使えないでしょうか?
http://msdn2.microsoft.com/ja-jp/system.string.split.aspx
できました!Dantiさんありがとうございます。
配列を作って…とかオプションの意味がわからないとかで
ちょこっと苦労してしまいましたが何とか実装できました。
1つだけでいいのにあえて配列にしなければならないところが
すこし気になりますがこれがベストかなと思い
これを使用することにしました。
ガッさんの方法も勉強になったので、せっかくなので
コメントとして残しておくことにしました。
最終的にこんな感じにしました。
Dim names As String()
Dim separator(1) As String
separator(0) = vbNewLine
'names = TextBoxBefor.Text.Replace(vbNewLine, vbNullChar).Split(vbNullChar)
'names = Split(TextBoxBefor.Text, vbNewLine)
names = TextBoxBefor.Text.Split(separator, New StringSplitOptions())
大変勉強になりました。
お二人ともありがとうございました。
ツイート | ![]() |