差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

最新のリビジョン 両方とも次のリビジョン
blog:2015:2015-09-17 [2015-09-17 21:58]
Decomo 作成
blog:2015:2015-09-17 [2017-01-04 16:19]
Decomo
行 3: 行 3:
 C#の''string''クラスにある''Trim()''メソッドは、C#の三大便利関数の1つと言って良いくらい便利な関数だ。 C#の''string''クラスにある''Trim()''メソッドは、C#の三大便利関数の1つと言って良いくらい便利な関数だ。
  
-簡単にえば文字列の先頭と末尾に付随する空白文字を削除る関数で、おおかたの理解としては間違ってはいないのだが、正確には「Unicodeが定める空白文字を削除する関数である。(更に更にいうと .NET Frameworkのバージョンによって細部の挙動が違う。詳細は[[https://msdn.microsoft.com/ja-jp/library/t97s7bs3%28v=vs.110%29.aspx|MSDN]]を参照の事。)+簡単にえば文字列の先頭と末尾に付随する**空白文字**を削除してくれる関数で、より正確には「**Unicodeが定める空白文字**を削除する関数である。(更にうと.NET Frameworkのバージョンによって細部の挙動が違う。詳細は[[https://msdn.microsoft.com/ja-jp/library/t97s7bs3%28v=vs.110%29.aspx|MSDN]]を参照の事。)
  
-Unicodeが定める空白文字とはなんぞ?というと、''Char.IsWhiteSpace()''メソッドに引っかかる文字である。これまた詳細はUnicodeの規格書なりWikipediaなりを見て頂くとして、はいわゆる半角スペース(U+0020)やタブ文字(U+0009)は然ることながら、<fc #ff0000>全角スペース(U+3000)も対象</fc>のだ。+Unicode空白文字ってなんぞ?というと、C#的には''Char.IsWhiteSpace(letter== true''となる文字である。詳細はUnicodeの規格書なりWikipediaなりを見て頂くとして、定義にはいわゆる半角スペース(U+0020)やタブ文字(U+0009)は然ることながら、<fc #ff0000>全角スペース(U+3000)も含まれる</fc>のだ。つまり''Trim()''を使うと全角スペースも奇麗さっぱりなくなっちゃう。なんというか、C/C++の非WIDE文字な文字列操作に慣れている身からすると、直感とは異なる挙動なわけ
  
 今回はこれにハマった。削られちゃマズい全角スペースが見事になくなってて、''Trim()''の挙動を初めて知ったという(´・ω・`) 今回はこれにハマった。削られちゃマズい全角スペースが見事になくなってて、''Trim()''の挙動を初めて知ったという(´・ω・`)
行 46: 行 46:
 </code> </code>
  
-この件とは直接関係ないけど、''TrimStart''と''TrimEnd''なんてメソッドもあったんだね。取り除きたい文字の配列を渡すと、名前それぞれ対象文字列の先頭もしくは末尾から除去してくれる。''Trim''の分割バージョンみたいなやつ、というよりも''Trim''が''TrimStart''と''TrimEnd''の合体技と言った方がいいか。覚えといて損は無さそう。+この件とは直接関係ないけど、''TrimStart''と''TrimEnd''なんてメソッドもあったんだね。取り除きたい文字の配列を渡すと、対象文字列の先頭もしくは末尾から除去してくれる。''Trim''の分割バージョンみたいなやつ、というよりも''Trim''が''TrimStart''と''TrimEnd''の合体技と言った方がいいか。覚えといて損は無さそう。
  
 ===== 参考サイト ===== ===== 参考サイト =====
   * [[https://msdn.microsoft.com/ja-jp/library/t97s7bs3%28v=vs.110%29.aspx|String.Trim メソッド (System)]]   * [[https://msdn.microsoft.com/ja-jp/library/t97s7bs3%28v=vs.110%29.aspx|String.Trim メソッド (System)]]
   * [[http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=546|.NET Reference Guide | Trimming Character Strings | InformIT]]   * [[http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=546|.NET Reference Guide | Trimming Character Strings | InformIT]]
  • blog/2015/2015-09-17.txt
  • 最終更新: 2018-06-23 12:45
  • by Decomo