0

今朝遭遇したのはこちら。次のような CMD パターンで記述された JavaScript ファイルがたくさんあります。

define(function(require, exports) {
    // code goes here
})

これらのファイルを操作して次のような結果を得るための単純な ruby​​ スクリプトがあります。

define(['module-a', 'module-b'], function(reuqire, exports) {
    // code
})

私が行った方法は、これらのファイルを開いて内容を読み取り、一致するかどうかを確認し、一致/^define\(function/する場合はそれらを置き換えることです。

code = File.open('foo.js').read
if code =~ /^define\(function/
  # do some work
end

奇妙な部分は、コードがその正規表現と一致しないことです。行 2 が返されますnil。これはうまくいきます:

code = "define(function(require, exports) {\n"
code =~ /^define\(function/ # ==> 0

nilを使用してコードが読み取られた場合にのみ返されますIO#read。ただし、文字列の先頭は機能します。

code = File.open('foo.js').read
code =~ /.define\(function/m # ==> 0

code[0] # ==> "" returns an empty string

しかし、^すべての行頭が一致していませんか?

4

2 に答える 2

0

「定義」する前に \n 以外の空白をチェックしますか? 特に \r の場合。. .

于 2013-03-08T09:50:47.463 に答える
0

その奇妙な文字列は、そのテキスト ファイルの BOM であることが判明しました。このプロジェクトの同僚の中には、BOM を使用することに同意したエンコーディングである UTF-8 でファイルを保存した人もいます。

解決策は次のとおりです。UTF-8 でエンコードされたファイルから BOM を削除する方法はありますか?

于 2013-03-11T08:19:40.980 に答える