- PR -

VB.NET VBCRLF VBNEWLINEの数を取得

1
投稿者投稿内容
和也さん
ベテラン
会議室デビュー日: 2006/02/09
投稿数: 78
投稿日時: 2006-03-27 11:16
すいません・・
VB.NETの改行数(行数)の取得についてなんですが、

dim test as String
test = "1行目"
test &= vbnewline
test &= "2行目"
test &= vbnewline
test &= "3行目"
System.Consol.Writeline("行数は" & ??? & "行です。")

-----------------
出力

行数は3行です。
-----------------


上記コードがあったとして
変数testの行数を取得したいのですが、可能でしょうか?
上記コードでは、"3"との結果を得たいのですが・・・
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-03-27 11:35
こんにちは。

私であれば
コード:

using System.Text.RegularExpressions;

MatchCollection match = Regex.Matches(test, vbnewline);
System.Consol.Writeline("行数は" & match.Count.ToString() & "行です。");


と書くと思います。
(C#風に書いていますが、VB.NETでも同じような感じだと思います)


[ メッセージ編集済み 編集者: ぽぴ王子 編集日時 2006-03-27 11:36 ]
YAS
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 59
投稿日時: 2006-03-27 11:45
最後に改行があれば,
コード:
    Private Function CountLine(ByVal s As String)
        Return s.Length - s.Replace(ControlChars.CrLf, ControlChars.Cr).Length
    End Function


でいいのですが,最後に改行があったり,なかったりするのなら,効率が悪いコードですが,
コード:
    Private Function CountLine2(ByVal s As String)
        Dim Count As Integer
        Dim Reader As New System.IO.StringReader(s)
        Do While Reader.Peek <> -1
            Reader.ReadLine()
            Count += 1
        Loop
        Return Count
    End Function


などというのが確実かと思います。
(もちろん,もっとスマートなコードがあると思います。)
YAS
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 59
投稿日時: 2006-03-27 11:53
考え直しました。
次のコードが比較的スマートかと。
コード:
 
    Private Function CountLine3(ByVal s As String)
        Return s.Split(ControlChars.CrLf).Length
    End Function

YAS
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 59
投稿日時: 2006-03-27 11:59
何度もすみません。
最後に改行がつく可能性があるのなら次のようなコードになると思います。
コード:
    Private Function CountLine4(ByVal s As String)
        Return s.TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf}).Split(ControlChars.CrLf).Length
    End Function

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-27 12:03
引用:

和也さんさんの書き込み (2006-03-27 11:16) より:

変数testの行数を取得したいのですが、可能でしょうか?
上記コードでは、"3"との結果を得たいのですが・・・


ないものは自作するというクセを付けると良いですよ。
String.IndexOf メソッド で検索してカウントするという素直な方法もありますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)