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。这个项目的一些同事用 UTF-8 保存了文件,这是我们同意使用的编码,带有 BOM。

这是解决方案:有没有办法从 UTF-8 编码文件中删除 BOM?

于 2013-03-11T08:19:40.980 回答