- - PR -
Trimメソッドについて教えて下さい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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-12-03 23:27
私の思い違いだったら申し訳ないですが、
Trim()は文字列全体の空白を削除するのではなく 左右の余白を削除するものですけど、 例えば、 " 123 abc " → "123 abc" になりますが、"123abc"にはなりません。 思い違いをされていないでしょうか? | ||||||||
|
投稿日時: 2004-12-03 23:36
stringクラスに入れたなら、unicodeとして扱われています。Shift_JIS等をエンコードしないで入れているなら別だけど。
かつのりさんの指摘が怪しいなぁ(^_^; そういうことをしたいなら、ReplaceAllです。 あ、空白がナンチャラという記述は、「全角、半角スペースだけでなく、タブ文字や改行コードも空白として認知されますよ」という注意です。 _________________ | ||||||||
|
投稿日時: 2004-12-04 00:06
すみません記入ミスでした。
正しくはTrimEnd()を使用して TrimEnd(' ')と TrimEnd(' ')と記述していました。 もう少し悩んでみます。 かつのりさん、Jittaさん ご指摘どうもありがとうございました。 | ||||||||
|
投稿日時: 2004-12-04 02:30
MokiMokiさん、こんばんは。
? 引数が配列でなかった、って事? しかし、
上記、どちらでも結果は"abcdef"になりますが…。 | ||||||||
|
投稿日時: 2004-12-04 08:22
Stringオブジェクトは不変です。"abc ".Trim(' ')としても、"abc "は変わりません。その結果を受ける必要があります。・・・ということでは?
_________________ | ||||||||
|
投稿日時: 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 | ||||||||
|
投稿日時: 2004-12-06 13:04
形式的には、 ・引数には Char の配列を指定できます。 ・Nothing もしくは nullも指定できます。 という意味です。 それぞれの指定がどういう意味かは、「戻り値」のところにあるとおり、 ・Char の配列を指定したときには、削除する「空白」を引数で指定されたものにする ・Nothing もしくは null を指定したときには、削除する「空白」を「空白文字」とする です。 |