【发布时间】:2015-12-03 16:55:06
【问题描述】:
假设一个word文件包含
ab{cdefg{hij{k
我想将 { 向右移动一个位置
abc{defgh{ijk{
我需要创建一个包含所有字符的数组,然后使用正则表达式搜索和替换运行一个循环
搜索:
({)(array[index])
替换:
$2$1
没有循环的普通正则表达式不起作用,因为我正在处理具有复杂字符的印度文本。我已经在 inDesign 中的 JavaScript 和 ExtendScript 上完成了这项工作,但我对 VB 一无所知。有人可以帮忙吗?
【问题讨论】:
-
你能描述一下印度文字是如何影响事物的吗?例如,某些印度语字符在 Word 中表示为 2 个字符是问题的一部分,而交换只会将“{”移动一个字符而不是 2 个字符。还是什么?
-
是的。某些显示为一个字母而在现实生活中被视为一个字母的指示连词实际上是 Unicode 中 2-5 个字母的簇。
-
我的(很明显)建议。如果 Word 的 Find/Replace 无法处理您正在处理的文本,请忘记正则表达式,并专注于 Word 对象模型(和 VBA)所关注的事实,将您的文档视为一系列 Word Character 对象,可以索引 1..等。然后您需要遍历字符序列以查找“{”(并可能忽略属于某些特殊印度字符序列的“{”字符,尽管我怀疑这会发生),然后检查以下字符并确定有多少 Unicode您需要移动“{”的字符。