...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

replace

マッチする文字列を置き換えるプログラム replace を書いてみた.
でも空白行があるとそこで読み込みが止まってしまう?
標準入力の終端の検出ってどうやるのだろう.
(追記:なんかうまくできてるみたいです)

コードは続きをどうぞ.


// > dir /s/b/n
// I:\D\reg_sample\main.d
// I:\D\reg_sample\makefile
// I:\D\reg_sample\run.bat
// I:\D\reg_sample\shell.bat
// I:\D\reg_sample\makeerror.log
// I:\D\reg_sample\replace.map
// I:\D\reg_sample\replace.exe
// I:\D\reg_sample\main.obj
// >
// > dir /s/b/n | replace.exe [replace] _
// I:\D\__g_s_m___\m_in.d
// I:\D\__g_s_m___\m_k_fi__
// I:\D\__g_s_m___\_un.b_t
// I:\D\__g_s_m___\sh___.b_t
// I:\D\__g_s_m___\m_k____o_._og
// I:\D\__g_s_m___\_______.m__
// I:\D\__g_s_m___\_______._x_

private import std.regexp;
private import std.stream;

int main(char[][] argc)
{
RegExp reg = new RegExp(argc[1],"ig");

for(;;)
{
char[] s = stdin.readLine();
if( stdin.eof() ) break;
s = reg.replace( s, argc[2]);
stdout.printf("%.*s\n", s);
}

return 0;
}