VB2005 行数カウントについて

解決


kawaq  2009-12-02 20:52:25  No: 146599

はじめまして、VB初心者のkawaqです。自分で書いた行数カウントのコードですが、☆部分が分からなくで、助けてください。よろしくお願いします。
        Dim sss As New IO.StreamReader("c:\test.txt")
        Dim BBB As String = sss.ReadToEnd

        Dim sa As Long = BBB.Length
        Dim oneLine As String
        'Console.WriteLine(sa)

        Dim iCount As Integer = 0

        Do While Not sss.EndOfStream
            oneLine = sss.ReadLine()

            If oneLine.☆構文☆= True Then
                iCount = iCount + 1

            End If
        Loop
        Console.WriteLine(iCount)


ぬぬ  2009-12-02 22:27:13  No: 146600

何がしたいのかがわからないから構文のとこもどうしようもないです。
どういう条件でカウントしていきたいんですか?
oneLineで一行読んで、何をTrueにしたいのか、その肝心の部分が・・


魔界の仮面弁士  2009-12-02 22:40:04  No: 146601

> ☆部分が分からなくで、助けてください。よろしくお願いします。
もう少し、細かい仕様を明らかにしてみてください。

『AAAA{改行}BBBB』というデータと、
『AAAA{改行}BBBB{改行}』というデータがあった場合、
それぞれの行数は、何行と数えたいのでしょうか?
たとえば、どちらも 2 行とするパターンもあれば、
前者が 2 行、後者が 3 行とするパターンもあるかと思います。

あるいは、『』という 0 バイトのファイルを読む場合は、
行数は 0 とするのでしょうか。それとも 1 行とするのでしょうか。

また、『AAAA{改行}{改行}CCCC』のように、空行が存在した場合に、
それをカウントしたくないといった特殊なパターンはありますか?

> Dim sss As New IO.StreamReader("c:\test.txt")
このテキストファイルの文字コードは何ですか?
Shift_JIS でしょうか。UTF-8 でしょうか。UTF-16 でしょうか。
文字コードが異なれば、読み込む部分のコードも変わってきます。


kawaq  2009-12-02 23:04:15  No: 146602

中途半端な質問すみません。改めて質問させてください。
UNIXのwc機能のようにVB2005で文字をカウントするプログラムを書きたいですが。

まずtest.txtファイルを作り、中に
123
Abc
A b 
C
そして文字数をカウント、行数をカウント、文字列をカウント(123、Abc)
コードは下記。
      Sub Main()
        Dim sss As New IO.StreamReader("c:\test.txt")
        Dim BBB As String = sss.ReadToEnd

        '▲バイト数を取得()
        Dim sa As Long = BBB.Length
Console.WriteLine(sa)

'▲行数を取得
Dim iCount As Integer = 0

        Dim Reader As New IO.StreamReader("C:\Test.txt")
        Do Until Reader.EndOfStream
どういう条件を加えば、行数がカウントできるですか?
            Console.WriteLine(Reader.ReadLine)
        Loop
        Reader.Close()
▲  文字列を取得
ここがまだ考えません。
End  Sub


ぬぬ  2009-12-02 23:27:01  No: 146603

あまり答えになってない気もしますが・・

仮にデータが
123
Abc
A b 
C
の状態だとすると
行数カウントとしてはiCount=4が欲しいってことですか?

単純に
Dim intCount As Integer = 0
Do Until Reader.EndOfStream  
  intCount += 1  
Loop
Reader.Close()

でカウントは取れると思います。何かしら条件が必要なら処理いるけどその部分がわかりません。


ぬぬ  2009-12-02 23:27:01  No: 146604

あまり答えになってない気もしますが・・

仮にデータが
123
Abc
A b 
C
の状態だとすると
行数カウントとしてはiCount=4が欲しいってことですか?

単純に
Dim intCount As Integer = 0
Do Until Reader.EndOfStream  
  intCount += 1  
Loop
Reader.Close()

でカウントは取れると思います。何かしら条件が必要なら処理いるけどその部分がわかりません。


kawaq  2009-12-02 23:36:55  No: 146605

ぬぬ さんへ
回答してくれてありがとうございます。
intCount += 1これだけ加えると、無限ループになります。わたくしがこのループの条件を考えでいます。


  2009-12-02 23:42:17  No: 146606

intCount += 1の前にReader.ReadLine()を入れて一行ずつ読めばいいんじゃない?


ぬぬ  2009-12-02 23:50:15  No: 146607

おーすいません。

ReadLineで行毎読んでその数だけカウントしてあげてください。

あと文字列取得もしたいなら行毎に読んでる間に何かしら処理してやらないと
Closeしてからだと何も取得できないよ。


kawaq  2009-12-02 23:55:43  No: 146608

魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。簡単な問題で申し訳ございません。
VBを勉強して、1週間経過したところ、いろいろな問題が抱えて、本当に助かりました。
        Dim iCount As Integer = 0

        Dim Reader As New IO.StreamReader("C:\Test.txt")
        Do Until Reader.EndOfStream
            Reader.ReadLine()
            iCount += 1

        Loop
        Console.WriteLine(iCount)

        Reader.Close()
こういう風にしました。
次の  ▲文字列をカウント  に頑張ります。ありがとうございます。


kawaq  2009-12-03 01:06:26  No: 146609

[[解決]]
魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。簡単な問題で申し訳ございません。
VBを勉強して、1週間経過したところ、いろいろな問題が抱えて、本当に助かりました。
        Dim iCount As Integer = 0

        Dim Reader As New IO.StreamReader("C:\Test.txt")
        Do Until Reader.EndOfStream
            Reader.ReadLine()
            iCount += 1

        Loop
        Console.WriteLine(iCount)

        Reader.Close()
こういう風にしました。
次の  ▲文字列をカウント  に頑張ります。ありがとうございます。


魔界の仮面弁士  2009-12-03 18:45:59  No: 146610

> [[解決]]

解決扱いにしたいのであれば、本文内に『[[解決]]』と記述するのではなく、
本文欄の上にある『解決時は質問者本人がここをチェックしてください。』の
チェックボックスを利用してください。


kawaq  2009-12-14 23:01:28  No: 146611

遅くなりまして、すみません。
魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加