Как заменить перевод строки в VBScript RegEx
Я использую VBScript и у меня есть скрипт, который преобразует XML в текстовый файл.
Я пытаюсь сделать замену, чтобы заменить строку ###EntryEnd###\|
к НЧ персонажу.
Я старался \n
а также \x0a
в шаблоне замены, но они не работают. Единственный обходной путь, который я нашел, это использовать Chr(10)
вместо.
Я искал ответ на это поведение, так как не смог его найти. И то и другое \n
а также \x0a
должно сработать. Любой совет?
Вот код:
' Method to process the file
Private Function PrepFile(ByVal strInp)
With New RegExp
.Global = True
.Pattern = "\|"
strInp = .Replace(strInp, "")
.Pattern = "<xmldoc .*?xml:lang=""([^""]+)"">"
strInp = .Replace(strInp, "English|$1|Part Of Speech|Note|EngDef|Glossary Definition###EntryEnd###|")
.Pattern = "<remove>.*?</remove>"
strInp = .Replace(strInp, "")
.Pattern = "(<tab/>|</para>)"
strInp = .Replace(strInp, "|")
.Pattern = "<[^>]*>"
strInp = .Replace(strInp, "")
.Pattern = "\n"
strInp = .Replace(strInp, "")
.Pattern = "###EntryEnd###\|"
strInp = .Replace(strInp, chr(10))
End With
PrepFile = strInp
End Function
Пример файла:
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc source="" type="TERMS" xml:lang="hu-HU">
<para id="13" name="Entry"><notrans><seg>School Administrator</seg><tab/></notrans><remove>___________</remove><seg>iskolavezető</seg></para>
<para id="14" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="15" name="EntryText"><notrans><seg> </seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg> </seg></para>
<para id="16" name="Context"><remove>PÉLDA:</remove><remove><seg>Cathy Brown iskolavezető</seg></remove><notrans>###EntryEnd###</notrans></para>
<para id="17" name="Entry"><notrans><seg>School Resource Officer</seg><tab/></notrans><remove>___________</remove><seg>iskolarendőr</seg></para>
<para id="18" name="Usage"><notrans><seg> </seg><tab/></notrans><remove>HASZNÁLAT:</remove><seg> </seg></para>
<para id="19" name="EntryText"><notrans><seg>a law enforcement officer who is responsible for providing security and crime prevention services in schools in parts of the United States and Canada.|</seg><tab/></notrans><remove>MEGHATÁROZÁS:</remove><seg>rendőr, aki azért felelős, hogy az iskolákban biztonsági és bűnmegelőzési feladatokat lásson az Egyesült Államok és Kanada egyes területein.</seg></para>
<para id="20" name="Context"><remove>PÉLDA:</remove><remove><seg>Ocalai iskolarendőrök</seg></remove><notrans>###EntryEnd###</notrans></para>
</xmldoc>
1 ответ
В вашем вопросе "проблема" (просто неверное предположение) может быть найдена в
- И то и другое
\n
а также\x0a
должно сработать
Документация Replace
Метод не утверждает, что строка замены позволяет использовать escape-последовательности, кроме $1
, $2
,... ссылки на группы захвата в шаблоне регулярного выражения.
Итак, если RegExp
объект не обеспечивает такое поведение в строке замены, и так как синтаксический анализатор VBScript не обрабатывает никакие escape-последовательности в строках, кроме экранированных двойных кавычек, нет никакого элемента, обрабатывающего \n
перевод строки.
Вы можете использовать указанные escape-последовательности для представления непечатаемых символов в строке шаблона поиска, но они не рассматриваются как escape-последовательности в строке замены.
Если вам не нравится Chr(10)
вызов функции, вы можете использовать доступные vbLf
константа для ссылки на символ перевода строки
strInp = .Replace(strInp, vbLf)