ここから本文です

VB.netでvbCrLfで区切ってsplit関数を使ったら、行の先頭に何か入ってる・・・・

bon********さん

2009/11/1111:19:39

VB.netでvbCrLfで区切ってsplit関数を使ったら、行の先頭に何か入ってる・・・・

複数の表示をさせたテキストボックスから1行ずつ抜き出して配列に
しまったのですが、どうも2行めから文字列の先頭に改行コードか何か
が入っているみたいでした。

split関数で区切りを指定するときに、vbCrLfではなく、vbCrやvbLfを
使用した時には、文字列の先頭には何も入りませんでした。

どうしてvbCrLfの時だけ、文字列の先頭に改行コードか何かが入ったの
でしょうか?

もしどなたかご存知でしたら、ご教授していただけると幸いです。

よろしくお願いします。



※以下、1行だけですがコードです

Dim tests() As String = TextBox1.text.Split(vbLf)

補足>ero_gro_nonsenseさんの回答を受けて

申し訳ありません。コードを間違えました。

Dim tests() As String = TextBox1.text.Split(vbCrLf)

問題があったのはこのコードでした。

閲覧数:
34,698
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

for********さん

2009/11/1113:25:19

>Dim tests() As String = TextBox1.text.Split(vbCrLf)

Option Strict Offですか?
String型のSplitの引数はCharです。
正確には
Dim tests() As String = TextBox1.text.Split(CChar(vbCrLf))
です。
このコードは
Dim tests() As String = TextBox1.Text.Split(vbCr)
と同じ結果になります。
2番目以降の配列には先頭にvbLfが付いた結果になります。

デリミタにvbCrLfを指定するのであれば、Split関数を使ってください。
Dim tests() As String = Split(TextBox1.Text, vbCrLf)

質問した人からのコメント

2009/11/12 11:04:34

>fortunecityさんと回答者の皆様

素早く的確な回答をありがとうございました。
とても勉強になりました。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

jin********さん

編集あり2009/11/1114:09:54

MSDNをよく読んだほうがいいです。

『Stringsモジュール』の『Split関数』ならデリミタはvbCrLfで意図した結果になります。

質問者さんが使っているのは、『Stringクラス』の『Splitメソッド』です。
http://msdn.microsoft.com/ja-jp/library/system.string.split(VS.80)....

デリミタの指定は Char[] です。

なので、質問者さんのコード
Dim tests() As String = TextBox1.text.Split(vbCrLf)
は、vbCrのみが格納されたChar配列で区切っていることになります。
よって、テキストボックスに出力されている2行目以降の文字列の先頭に改行コードが付いて当然です。


>plit関数で区切りを指定するときに、vbCrLfではなく、vbCrやvbLfを
>使用した時には、文字列の先頭には何も入りませんでした。

vbCrの時は、2行目以降の先頭にLF、vbLfの時は1行目からの末尾にCRが付いていると思いますよ。


vbCrLfという文字2つを一度にデリミタに指定したいなら、

(『Stringクラス』の『Splitメソッド』)
Dim delimiter() As String = {vbCrLf}
Dim tests() As String = TextBox1.Text.Split(delimiter, StringSplitOptions.None)

もしくは、

(『Stringsモジュール』の『Split関数』)
Dim tests() As String = Strings.Split(Me.TextBox1.Text, vbCrLf)

です。



【補足】
書き込んでいる間に、fortunecityさんが先に回答してくれました。
しかも内容もかなりかぶっているので、BAを選ぶときは私よりもfortunecityさんを優先して下さい。

ero********さん

2009/11/1112:03:12

vbCrLfとはキャリッジリターン+ラインフィード
vbCrLfで改行している文字列をvbLfでSplitしたら
そりゃvbCrが残るんじゃない?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる