【发布时间】:2010-11-01 14:14:49
【问题描述】:
对于一组给定的文本文件,我需要找到每个“\”字符并将其替换为“\\”。这是一个 Windows 系统,我的脚本语言选项是 Javascript、VBScript 或 Perl。
这些文件很大(每个文件约 10MB),而且数量很多(约 15,000 个)。我已经想出了以下 Javascript:
function EscapeSlashes(inFilePath)
{
var readOnly = 1;
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var outFile = fso.CreateTextFile(inFilePath + "escaped.js", true);
var inFile = fso.OpenTextFile(inFilePath, readOnly);
var currChar;
while(!inFile.AtEndOfStream)
{
currChar = inFile.Read(1);
//check for single backslash
if(currChar != "\\")
{
outFile.Write(currChar);
}
else
{
//write out a double backslash
outFile.Write("\\\\");
}
}
outFile.Close();
inFile.Close();
}
我担心上面的内容可能会有点慢。有什么方法可以改进算法吗?由于我用两个字符替换一个字符,我认为这不能就地完成。
逐行读取而不是逐字符读取有什么性能优势吗?
在这种情况下,Perl 或 VBScript 比 Javascript 有什么优势吗?
【问题讨论】:
标签: javascript algorithm optimization file-io