C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 文字列の行数と1行当りの最大文字数の取得


(過去ログ 31 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■14880 / inTopicNo.1)  文字列の行数と1行当りの最大文字数の取得
  
□投稿者/ 光 (1回)-(2008/02/28(Thu) 11:14:27)

分類:[C#] 

検討がつかず、悩んでいます。
おねがいします。

下のコードように文字列が入っている「 a 」の、
行数と1行当りの最大文字数(全角で)を取得したいのですが、
どの様にやればよいのでしょう?

string a = 
"あいうえお" + "\r\n" +
"あいうえおかきくけこ" + "\r\n" +
"0123456789" + "\r\n" +
"あいうえお123456789"

この場合、行数=4,最大文字数=10(全角カウント)

引用返信 編集キー/
■14881 / inTopicNo.2)  Re[1]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ 倉田 有大 (141回)-(2008/02/28(Thu) 11:24:38)
No14880 (光 さん) に返信
> 検討がつかず、悩んでいます。
> おねがいします。
>
> 下のコードように文字列が入っている「 a 」の、
> 行数と1行当りの最大文字数(全角で)を取得したいのですが、
> どの様にやればよいのでしょう?
>
> string a =
> "あいうえお" + "\r\n" +
> "あいうえおかきくけこ" + "\r\n" +
> "0123456789" + "\r\n" +
> "あいうえお123456789"
>
> この場合、行数=4,最大文字数=10(全角カウント)

普通に、一文字一文字見てやって、\r\n発見したら、行数+1
これで、行数はクリアーですね。
後は、\r\nを発見するまで、文字数をカウントしていき、\r\nみつけたら、今までの最大文字数と比較すれば
よいのではないでしょうか。
後は全角か半角かの判断ですが、shift_jisの話題ですね
http://jeanne.wankuma.com/tips/string/lenb.html
このページにやり方が書いてますね。

後は、コードに書きなおせるかです。

引用返信 編集キー/
■14894 / inTopicNo.3)  Re[2]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ 光 (2回)-(2008/02/28(Thu) 14:53:48)
No14881 (倉田 有大 さん) に返信

簡単にはいかず、手間の掛かることなんですね。
頑張ってみます。
ありがとうございました。
解決済み
引用返信 編集キー/
■14900 / inTopicNo.4)  Re[2]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ myugaru (20回)-(2008/02/28(Thu) 16:51:47)
myugaru さんの Web サイト
解決済みにしちゃってますけどぉ・・

■No14881 (倉田 有大 さん) に返信
> 普通に、一文字一文字見てやって、\r\n発見したら、行数+1
> これで、行数はクリアーですね。

StringReader sr = new StringReader(a);
int count = 0;
while (sr.Peek() >= 0) {
    string line = sr.ReadLine();
    count++;
}
Console.WriteLine(count);

こういうのを教えて欲しいのでは?w
全角文字数ってのはじゃんぬさんのやり方で私も賛成ですw

引用返信 編集キー/
■14901 / inTopicNo.5)  Re[3]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ myugaru (21回)-(2008/02/28(Thu) 16:56:20)
myugaru さんの Web サイト
No14894 (光 さん) に返信
> ■No14881 (倉田 有大 さん) に返信
>
> 簡単にはいかず、手間の掛かることなんですね。
> 頑張ってみます。
> ありがとうございました。

解決済みってのは実際にあなたがコードを書き終わって解決してからチェックしてください。
ちなみに解決済みの場合のコードも、ここを見ている大勢の同じ疑問を持つ人たちのために
あなたがコードを示して「こういうコードで解決しました」とやる義務があると私は思いますよ。
引用返信 編集キー/
■14902 / inTopicNo.6)  Re[3]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ terror (8回)-(2008/02/28(Thu) 16:56:55)
No14900 (myugaru さん) に返信
> 解決済みにしちゃってますけどぉ・・
>
> ■No14881 (倉田 有大 さん) に返信
>>普通に、一文字一文字見てやって、\r\n発見したら、行数+1
>>これで、行数はクリアーですね。
>
> StringReader sr = new StringReader(a);
> int count = 0;
> while (sr.Peek() >= 0) {
> string line = sr.ReadLine();
> count++;
> }
> Console.WriteLine(count);
>
> こういうのを教えて欲しいのでは?w
> 全角文字数ってのはじゃんぬさんのやり方で私も賛成ですw

Splitを使うのがシンプルでよいのではないでしょうか?
引用返信 編集キー/
■14914 / inTopicNo.7)  Re[4]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ myugaru (23回)-(2008/02/28(Thu) 17:44:10)
myugaru さんの Web サイト
No14902 (terror さん) に返信
> Splitを使うのがシンプルでよいのではないでしょうか?

おお、それもアリです!さあ質問者抜きでもっと盛り上がろうぜおっ(待て
引用返信 編集キー/
■14937 / inTopicNo.8)  Re[5]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ 倉田 有大 (142回)-(2008/02/28(Thu) 21:50:37)
No14914 (myugaru さん) に返信
> ■No14902 (terror さん) に返信
>>Splitを使うのがシンプルでよいのではないでしょうか?
>
> おお、それもアリです!さあ質問者抜きでもっと盛り上がろうぜおっ(待て

わはは^^まじめにやると、どんな美しいソースで実現できるか
私もしりたいですw
処理速度にこだわるのもありでしょうか
引用返信 編集キー/
■15163 / inTopicNo.9)  Re[6]: 文字列の行数と1行当りの最大文字数の取得
□投稿者/ 光 (3回)-(2008/03/05(Wed) 20:04:14)
みなさま、すみません。(スレから少し離れていました)
そして、ありがとうございます!

とりあえず、私のコードを載せておきます。
スリム化等のアイデアありましたら、またご意見お聞かせ下さい。
ありがとうございました。

//複数行ある文字列(strTmp)の行数と
//1行の最長文字数(2バイトカウント)の取得
//要:http://jeanne.wankuma.com/tips/string/lenb.html
int iGyouCount = 0;
int iMojiMax = 0;
string line;
StringReader sr = new StringReader(strTmp);
while ((line = sr.ReadLine()) != null)
{
int iByteCount = VBStrings.LenB(line) / 2;
if (iByteCount > iMojiMax)
{
iMojiMax = iByteCount;
}
iGyouCount++;
}

Console.WriteLine(iGyouCount.ToString());
Console.WriteLine(iMojiMax.ToString());

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -