Для данного набора текстовых файлов мне нужно найти каждый символ «\
» и заменить его на «\\
». Это система Windows, и мои варианты языка сценариев - Javascript, VBScript или Perl.
Эти файлы довольно большие (~ 10МБ за штуку), и их довольно много (~ 15000). Я уже придумал следующий 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?