.NET Micro Framework で string.Replace 文字列置換を使うには

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

Netduino などで使う .NET のコンパクトバージョン、.NET Micro Framework では、文字列関係のメソッドが充実していません

コンパクトなフレームワークですので、削られているものも多くて当然なのですが、文字列処理をするとなると文字列を置換する Replace メソッド書式を指定して文字列を作る Format メソッド文字列をどんどん足していける StringBuilder クラスなどがないのは非常に不便です。

そこで今回は、これらを .NET Micro Framework でも使えるようにしてくれるライブラリを紹介します。

スポンサーリンク

.NET Micro Framework – Common Extensions

今回使うライブラリはこちら。

.NET Micro Framework - Common Extensions.NET Micro Framework - Common Extensions

執筆時点でのバージョンは Release 1.1 revision 2 、タイムスタンプは Mon Nov 1 2010 at 7:00 AM でした。

All implementations are thoroughly unit tested.
If you think an implementation can be done better, please contribute! Where possible, the functionality of the methods mimics those of the ‘standard’ .NET Framework.
全ての実装は徹底的にユニットテストされています。
もし、もっとうまく実装できると思われた場合はご協力をお願いします。
可能な限り、スタンダードな .NET Framework と同じような機能にしてあります。

と書かれているので、割と安心して使うことができます。

ダウンロード

▲の CodePlex のページから download ボタンを押すと NetMf.CommonExtensions.zip というファイルがダウンロードできます。

download ボタンを押してファイルをダウンロードする

ダウンロードしたら解凍します。Release フォルダの中に▼のようなファイルが入っています。

解凍したファイルを適当なフォルダにすべてコピー

このファイル、全てが必要ですので、 Release フォルダごと適当なフォルダにコピーして名前を変更しておくとよいでしょう。今回は▲のように C:\Lib\NetMf.CommonExtensions にしました。

参照設定の追加

Visual Studio のソリューションエクスプローラーで、プロジェクト名を右クリックし、[参照の追加…] から今配置した NetMf.CommonExtensions.dll を追加します。

参照を追加する

[参照設定]を開くと NetMf.CommonExtensions が追加されていることが確認できると思います。試しに NetMf.CommonExtensions を右クリックし、[オブジェクト ブラウザーで表示]をしてみると、StringExtensions クラスにReplace 拡張メソッドが含まれていることがわかります。

オブジェクトブラウザーを開いてみる

StringExtensions のメンバーは Replace だけ

クラス名 内容
StringBuilder .NET FrameworkのStringBuilderと同じく、文字列をどんどん連結していくのに使えるクラス
StringExtensions Replace 拡張メソッドのみを含むクラス
StringUtility Format メソッドや IsNullOrEmpty メソッドなどの静的メソッドを含むクラス

Replace 拡張メソッドを使うために using の追加

さらに Replace などの拡張メソッドを使うには、ソースファイルに using 設定が必要です。 .cs ファイルの先頭に▼の1行を追加するだけです。

Replace メソッドを呼び出す

ここまでくると string 型のオブジェクトに、.(ドット)を打つだけで、インテリセンスに Replace が表示されているはずです。

インテリセンスから Replace が利用できる

C# 3.0 で追加された拡張メソッドの効果によって、あたかも string に元々備わっていたかのように Replace メソッドを使うことができます。すばらしい!

ちなみに Replace メソッドは普通の .NET のものと同じように (“検索文字列”, “置換文字列”) の順でパラメータを渡すだけです。使ってみましたが、動作が重いこともなく、とても便利になりました!!

Format や IsNullOrEmpty メソッド

これらは StringUtility クラスのスタティックメソッドとして定義されています(通常の .NET Framework と同じ感じですね)。

▼のように使えます。

最後までお読みいただきありがとうございました m(_ _)m

なぜか使えない MFDpwsExtensions.dll

ところで Replace や StringBuilder を探してネットをさまよっていると 「MFDpwsExtensions.dll という DLL に StringBuilder が含まれていて、そこに Replace メソッドが含まれている。」というような情報がありました。

実際、MSDN にもそう表記されています。

StringBuilder.Replace Method (String, String) - MSDNStringBuilder.Replace Method (String, String) - MSDN

Available in the .NET Micro Framework versions 2.5, 3.0, 4.0, and 4.1. (これらの .NET MF のバージョンで使用可能)と書かれているが、使えない

たしかに MFDpwsExtensions.dll は .NET Micro Framework と一緒に入っており、参照設定に追加できます。ただ、追加したところで、System.Ext.Text という名前空間自体がなく、当然 StringBuilder クラスや Replace メソッドもありません

System.Ext.Text が存在しない

私の環境(.NET MF 4.1)だけなのかもしれませんが、原因は不明です。ただまぁ、今回紹介した Common Extensions のほうが、通常の Framework に実装が近く、使いやすそうなので、これでいきましょう。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存