- PR -

DataTableの空白がついたデータに対するフィルタリングについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/04/10
投稿数: 3
投稿日時: 2007-04-10 18:54
お世話になっております。

vs2005 C#にて
下記コードで
DataTableのフィルタリングを行った場合に
意図しないデータ(1番と4番)も抽出されてしまいます。

この場合、2番のみ抽出できるような方法ははありませんでしょうか?
ご教授の程 よろしくお願いいたします 。


---------------------------------------------

DataTable dataTable = new DataTable();

dataTable.Columns.Add("code",typeof(int));
dataTable.Columns.Add("name",typeof(string));

// 文字だけ
dataTable.Rows.Add(new object[] { 1 , "a" });
// 後ろに半角スペース
dataTable.Rows.Add(new object[] { 2 , "a " });
// 前に半角スペース
dataTable.Rows.Add(new object[] { 3 , " a" });
// 後ろに全角スペース
dataTable.Rows.Add(new object[] { 4 , "a " });
// 前と後ろに半角スペース
dataTable.Rows.Add(new object[] { 5 , " a " });
// 文字の間に半角スペース
dataTable.Rows.Add(new object[] { 6 , "a a" });

// 後方に半角スペースがあるもののみ抽出
DataRow[] dataRows = dataTable.Select("name = 'a '");

---------------------------------------------
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-10 20:17
タブや改行も、空白“類”として、同じに扱われちゃうんじゃないかなぁ?
今出先なので調べられないのですが、「文字列 比較」あたりで MSDN を検索して、出てこないですか?
正規表現には、そういうオプションがあったと思うけど、どうかなぁ?
_________________
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-04-11 00:28
試していないのですが、
DataTable.CaseSensitive に true を設定するとかじゃダメでしょうか?
未記入
会議室デビュー日: 2007/04/10
投稿数: 3
投稿日時: 2007-04-11 13:59
Jittaさん、KIさん御回答ありがとうございます。

Jittaさん
MSDNで文字列比較等で調べてみましたところ
比較方法を定義するものとして
CompareInfoクラスやCompareOptions列挙体が
ヒットしまして
DataTableクラスにどうにか設定できないかと
試みてみましたが
うまくいきませんでした。

KIさん
CaseSensitiveプロパティをTrueにして
大文字と小文字を区別できるようにはなりましたが
文字列の最後の空白については扱いが変わりませんでした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-11 19:28
バッチ ファイルで使う手
COL || '$$' = 'A $$'

文字列連結は Oracle 形式で書いているので、適切に修正して下さい。
_________________
未記入
会議室デビュー日: 2007/04/10
投稿数: 3
投稿日時: 2007-04-12 13:13
Jittaさん

教えていただきました方法で
試してみましたところ
空白(有、無、半角、全角)をすべて
判別できるようになりました。
ありがとうございます。
1

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