.NET Micro Framework で string.Replace 文字列置換を使うには
Netduino などで使う .NET のコンパクトバージョン、.NET Micro Framework では、文字列関係のメソッドが充実していません。
コンパクトなフレームワークですので、削られているものも多くて当然なのですが、文字列処理をするとなると文字列を置換する Replace メソッドや 書式を指定して文字列を作る Format メソッド、文字列をどんどん足していける StringBuilder クラスなどがないのは非常に不便です。
そこで今回は、これらを .NET Micro Framework でも使えるようにしてくれるライブラリを紹介します。
目次
.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 というファイルがダウンロードできます。
ダウンロードしたら解凍します。Release フォルダの中に▼のようなファイルが入っています。
このファイル、全てが必要ですので、 Release フォルダごと適当なフォルダにコピーして名前を変更しておくとよいでしょう。今回は▲のように C:\Lib\NetMf.CommonExtensions にしました。
参照設定の追加
Visual Studio のソリューションエクスプローラーで、プロジェクト名を右クリックし、[参照の追加…] から今配置した NetMf.CommonExtensions.dll を追加します。
[参照設定]を開くと NetMf.CommonExtensions が追加されていることが確認できると思います。試しに NetMf.CommonExtensions を右クリックし、[オブジェクト ブラウザーで表示]をしてみると、StringExtensions クラスにReplace 拡張メソッドが含まれていることがわかります。
クラス名 | 内容 |
---|---|
StringBuilder | .NET FrameworkのStringBuilderと同じく、文字列をどんどん連結していくのに使えるクラス |
StringExtensions | Replace 拡張メソッドのみを含むクラス |
StringUtility | Format メソッドや IsNullOrEmpty メソッドなどの静的メソッドを含むクラス |
Replace 拡張メソッドを使うために using の追加
さらに Replace などの拡張メソッドを使うには、ソースファイルに using 設定が必要です。 .cs ファイルの先頭に▼の1行を追加するだけです。
1 |
using NetMf.CommonExtensions; |
Replace メソッドを呼び出す
ここまでくると string 型のオブジェクトに、.(ドット)を打つだけで、インテリセンスに Replace が表示されているはずです。
C# 3.0 で追加された拡張メソッドの効果によって、あたかも string に元々備わっていたかのように Replace メソッドを使うことができます。すばらしい!
1 2 |
// A を XYZ に置換 string str = str.Replace("A", "XYZ"); |
ちなみに Replace メソッドは普通の .NET のものと同じように (“検索文字列”, “置換文字列”) の順でパラメータを渡すだけです。使ってみましたが、動作が重いこともなく、とても便利になりました!!
Format や IsNullOrEmpty メソッド
これらは StringUtility クラスのスタティックメソッドとして定義されています(通常の .NET Framework と同じ感じですね)。
▼のように使えます。
1 2 3 4 5 6 |
// Format string temp = StringUtility.Format("Temp:{0} C", 25); // IsNullOrEmpty if (StringUtility.IsNullOrEmpty(str)) { // do hogehoge } |
最後までお読みいただきありがとうございました m(_ _)m
なぜか使えない MFDpwsExtensions.dll
ところで Replace や StringBuilder を探してネットをさまよっていると 「MFDpwsExtensions.dll という DLL に StringBuilder が含まれていて、そこに Replace メソッドが含まれている。」というような情報がありました。
実際、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 メソッドもありません。
私の環境(.NET MF 4.1)だけなのかもしれませんが、原因は不明です。ただまぁ、今回紹介した Common Extensions のほうが、通常の Framework に実装が近く、使いやすそうなので、これでいきましょう。