这是我今天早上遇到的情况。我有很多用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
但^
是否与所有行开头匹配?
答案 0 :(得分:0)
在“define”之前检查\ n以外的空格?特别是\ r。 。
答案 1 :(得分:0)
奇怪的字符串原来是该文本文件的BOM。该项目的一些同事使用BOM保存了UTF-8中的文件,这是我们同意使用的编码。
以下是解决方案:Is there a way to remove the BOM from a UTF-8 encoded file?