- PR -

Trimメソッドについて教えて下さい

投稿者投稿内容
MokiMoki
会議室デビュー日: 2004/11/22
投稿数: 19
投稿日時: 2004-12-03 23:20
C#でshift-jisのファイルを読み取り、文字列に対してTrim()メソッドを使用しましたが
空白(半角及び全角)が、削除されてくれません。

ヘルプを確認したところ
「どの Unicode 文字が空白文字として分類されているかの詳細については、
 Char.IsWhiteSpace メソッドの解説を参照してください」
とあります。

また、宇宙仮面さんのページに
trim の注意
「空白文字は 0x9、0xA、0xB、0xC、0xD、0x20、0xA0、0x2000、0x2001、0x2002、
 0x2003、0x2004、0x2005、0x2006、0x2007、0x2008、0x2009、0x200A、0x200B、
 0x3000、0xFEFF です。」と記載されていました。??

trimメソッドはユニコード専用ということでしょうか?

お手数ですがご宜しくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-12-03 23:27
私の思い違いだったら申し訳ないですが、
Trim()は文字列全体の空白を削除するのではなく
左右の余白を削除するものですけど、
例えば、
" 123 abc " → "123 abc"
になりますが、"123abc"にはなりません。
思い違いをされていないでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-03 23:36
stringクラスに入れたなら、unicodeとして扱われています。Shift_JIS等をエンコードしないで入れているなら別だけど。
かつのりさんの指摘が怪しいなぁ(^_^;

そういうことをしたいなら、ReplaceAllです。

あ、空白がナンチャラという記述は、「全角、半角スペースだけでなく、タブ文字や改行コードも空白として認知されますよ」という注意です。
_________________
MokiMoki
会議室デビュー日: 2004/11/22
投稿数: 19
投稿日時: 2004-12-04 00:06
すみません記入ミスでした。
正しくはTrimEnd()を使用して
TrimEnd(' ')と
TrimEnd(' ')と記述していました。

もう少し悩んでみます。
かつのりさん、Jittaさん ご指摘どうもありがとうございました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-12-04 02:30
MokiMokiさん、こんばんは。

引用:

TrimEnd(' ')と
TrimEnd(' ')と記述していました。




引数が配列でなかった、って事?
しかし、

コード:

// char 配列
Console.Write("abc ".TrimEnd(new char[]{' '}));
Console.Write(" def".TrimStart(new char[]{' '}));

// char
Console.Write("abc ".TrimEnd(' '));
Console.Write(" def".TrimStart(' '));


上記、どちらでも結果は"abcdef"になりますが…。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-04 08:22
Stringオブジェクトは不変です。"abc ".Trim(' ')としても、"abc "は変わりません。その結果を受ける必要があります。・・・ということでは?
_________________
MokiMoki
会議室デビュー日: 2004/11/22
投稿数: 19
投稿日時: 2004-12-06 12:44
旨く動作しました!
誤)Data.TrimEnd(' ');
正)Data = Data.TrimEnd(' ');と記述したら結果が得られました。

どうやら初歩的なことを理解できていないことが根本的な原因ようです。
皆様にご迷惑をおかけしたことをお詫び申し上げます。
どうもみません。

しかしマイクロソフトの以下の文書がまだピンときません。↓
削除する Unicode 文字の配列、または null 参照 (Visual Basic では Nothing) 。
url:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemstringclasstrimtopic1.asp

にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-06 13:04
引用:

削除する Unicode 文字の配列、または null 参照 (Visual Basic では Nothing) 。


形式的には、
・引数には Char の配列を指定できます。
・Nothing もしくは nullも指定できます。
という意味です。
それぞれの指定がどういう意味かは、「戻り値」のところにあるとおり、
・Char の配列を指定したときには、削除する「空白」を引数で指定されたものにする
・Nothing もしくは null を指定したときには、削除する「空白」を「空白文字」とする
です。

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