はじめまして、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)
何がしたいのかがわからないから構文のとこもどうしようもないです。
どういう条件でカウントしていきたいんですか?
oneLineで一行読んで、何をTrueにしたいのか、その肝心の部分が・・
> ☆部分が分からなくで、助けてください。よろしくお願いします。
もう少し、細かい仕様を明らかにしてみてください。
『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 でしょうか。
文字コードが異なれば、読み込む部分のコードも変わってきます。
中途半端な質問すみません。改めて質問させてください。
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
あまり答えになってない気もしますが・・
仮にデータが
123
Abc
A b
C
の状態だとすると
行数カウントとしてはiCount=4が欲しいってことですか?
単純に
Dim intCount As Integer = 0
Do Until Reader.EndOfStream
intCount += 1
Loop
Reader.Close()
でカウントは取れると思います。何かしら条件が必要なら処理いるけどその部分がわかりません。
あまり答えになってない気もしますが・・
仮にデータが
123
Abc
A b
C
の状態だとすると
行数カウントとしてはiCount=4が欲しいってことですか?
単純に
Dim intCount As Integer = 0
Do Until Reader.EndOfStream
intCount += 1
Loop
Reader.Close()
でカウントは取れると思います。何かしら条件が必要なら処理いるけどその部分がわかりません。
ぬぬ さんへ
回答してくれてありがとうございます。
intCount += 1これだけ加えると、無限ループになります。わたくしがこのループの条件を考えでいます。
intCount += 1の前にReader.ReadLine()を入れて一行ずつ読めばいいんじゃない?
おーすいません。
ReadLineで行毎読んでその数だけカウントしてあげてください。
あと文字列取得もしたいなら行毎に読んでる間に何かしら処理してやらないと
Closeしてからだと何も取得できないよ。
魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。簡単な問題で申し訳ございません。
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()
こういう風にしました。
次の ▲文字列をカウント に頑張ります。ありがとうございます。
[[解決]]
魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。簡単な問題で申し訳ございません。
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()
こういう風にしました。
次の ▲文字列をカウント に頑張ります。ありがとうございます。
> [[解決]]
解決扱いにしたいのであれば、本文内に『[[解決]]』と記述するのではなく、
本文欄の上にある『解決時は質問者本人がここをチェックしてください。』の
チェックボックスを利用してください。
遅くなりまして、すみません。
魔界の仮面弁士さん
ぬぬさん
あさん
解決できました。
ありがとうございます。ループうまく回りました。
ツイート | ![]() |