.NET Framewrkで文字列置換
ずっと画像処理系の開発に携わってきたのでスピード命なC/C++とか、SSEアセンブラとかばかりを扱ってきたのです。なのでマネージドコードとか.NET Frameworkとかあまり縁がなくて、今さらながらお勉強中。
テキストファイルの文字列置換のコードを書いてみましたが、これは楽チンでいいですなあ。
// data=%{date}, time=%{time} #include "stdafx.h" using namespace System; using namespace System::IO; using namespace System::Collections; using namespace System::Text::RegularExpressions; // 文字列置換の実験 // inからregexを探してdataに置き換える。regexは正規表現。 String^ replace(String^ in, String^ regex, String^ data) { String ^out; Regex^ rx = gcnew Regex(regex); out = rx->Replace(in, data); return out; } int main(array<System::String ^> ^args) { StreamReader ^sr = gcnew StreamReader(args[0], System::Text::Encoding::GetEncoding("shift_jis")); String^ org = sr->ReadToEnd(), ^tmp, ^after; // args[0]ファイルを一気に読み込む tmp = replace(org, "%{date}", "2012/02/24"); after = replace(tmp, "%{time}", "21:10:05.545"); StreamWriter^ sw = gcnew StreamWriter(args[1], false, System::Text::Encoding::GetEncoding("shift_jis")); sw->Write(after); // 文字列置換結果をargs[1]に保存 sw->Close(); return 0; } // data=%{date}, time=%{time}