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

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

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

Re[6]: 行をuniqしたいと考えています。


(過去ログ 62 を表示中)

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

■35669 / inTopicNo.1)  行をuniqしたいと考えています。
  
□投稿者/ テキスト編集 (1回)-(2009/05/12(Tue) 11:59:09)

分類:[C#] 

こんにちは。テキスト編集について教えてください。
行をuniqしたいと考えています。

list = null;
foreach (string line in lines)
{
if (!list.Contains(line)) list = list + line + "\r\n";
}

とすると、listがnullなので初回例外になってしまいます。
どう修正したらいいですか?

引用返信 編集キー/
■35670 / inTopicNo.2)  Re[1]: 行をuniqしたいと考えています。
□投稿者/ επιστημη (1914回)-(2009/05/12(Tue) 12:04:14)
επιστημη さんの Web サイト
2009/05/12(Tue) 12:06:02 編集(投稿者)

list = "";
から始めてはいかがでしょうか。

# ...あれ?
# uniqって「連続する同一行を除外する」んだけど、これでいいのかしら?

引用返信 編集キー/
■35671 / inTopicNo.3)  Re[2]: 行をuniqしたいと考えています。
□投稿者/ テキスト編集 (2回)-(2009/05/12(Tue) 12:12:15)
ありがとうございます。
おっしゃるとおりでできました。
書いた直後に、ひょっとしてnullだからだめなのだから、改行でも入れてみるかと、
string list = "\r\n";
としてみて、動くのを確認したところでした。
でもこれだと改行が入っているので、汚いな〜と思っていましたが、
string list = "";
とすればよいのですね。ばっちりです。できました。
すると、
string list = "";
と
string list = null;
というのは、違うということですね。
勉強になりました。

解決済み
引用返信 編集キー/
■35672 / inTopicNo.4)  Re[3]: 行をuniqしたいと考えています。
□投稿者/ テキスト編集 (3回)-(2009/05/12(Tue) 12:18:04)
あ。そういえばたしかにuniqは連続する同一行を除外するのですが、
今回ほしかったのはこの機能(連続しなくても同一行は除外する)でよかったので、
これで充分でした。
解決済み
引用返信 編集キー/
■35676 / inTopicNo.5)  Re[4]: 行をuniqしたいと考えています。
□投稿者/ επιστημη (1915回)-(2009/05/12(Tue) 13:24:32)
επιστημη さんの Web サイト
ご参考:

using System;
using System.Collections.Generic;

class Program {
  public static void Main() {
    string[] lines = { 
      "zero", "one", "two", "three", "four",
      "zero", "one", "two", "three",
      "zero", "one", "two",
      "zero", "one",
      "zero" 
    };
    foreach ( string item in new HashSet<string>(lines) ) {
      Console.WriteLine(item); //  ↑ぶっちゃけ「こんだけ」で実現可能(順不同で構わんなら)
    }
  }
}

解決済み
引用返信 編集キー/
■35678 / inTopicNo.6)  Re[3]: 行をuniqしたいと考えています。
□投稿者/ επιστημη (1916回)-(2009/05/12(Tue) 13:38:46)
επιστημη さんの Web サイト
2009/05/12(Tue) 13:40:09 編集(投稿者)
ついでに

> string list = "";
> と
> string list = null;
> というのは、違うということですね。

違いますねぇ。

string list = "";    // 空箱
string list = null;  // 箱すら無い

空家と更地みたいなもんです。更地には家すらありません。

解決済み
引用返信 編集キー/
■35710 / inTopicNo.7)  Re[4]: 行をuniqしたいと考えています。
□投稿者/ .SHO (821回)-(2009/05/12(Tue) 19:24:32)
ついでに

> string list = ""; // 空箱
> string list = null; // 箱すら無い

C# は知らんけど、C だったら "" は、'\0' の領域が確保されますね。

解決済み
引用返信 編集キー/
■35838 / inTopicNo.8)  Re[5]: 行をuniqしたいと考えています。
□投稿者/ テキスト編集 (4回)-(2009/05/14(Thu) 20:51:17)
ありがとうございました。
昨日、夢の中で考えていたのですが、
string list = "";	//枠線あり。
string list = null;	//白紙

いやいっそ
string list = "";	//白紙
string list = null;	//紙もない。ないこともわからない。

string list = "";	//光りあり
string list = null;	//真っ暗やみ

string list = "";	//大気圏
string list = null;	//真空

とか。なるほど。この違いは大きいなと思いました。

解決済み
引用返信 編集キー/
■35840 / inTopicNo.9)  Re[6]: 行をuniqしたいと考えています。
□投稿者/ επιστημη (1921回)-(2009/05/14(Thu) 21:03:33)
επιστημη さんの Web サイト
2009/05/14(Thu) 22:06:19 編集(投稿者)

> この違いは大きいなと思いました。

そゆことで。

string 解答 = ""; // 白紙提出
string 解答 = null; // せんせー、回答用紙足りませーん

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -