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