用[bold]标签删除句子

时间:2015-12-10 13:09:12

标签: javascript json idml

我需要创建一个生成此代码的脚本:

<CharacterStyleRange FillColor="">
    <Properties>
        <AppliedFont type="string">Agency FB</AppliedFont>
    </Properties>
    <Content>Hallo</Content>
</CharacterStyleRange>

<CharacterStyleRange FillColor="" FontStyle="Bold">
        <Properties>
            <AppliedFont type="string">Agency FB</AppliedFont>
        </Properties>
    <Content>ik</Content>
</CharacterStyleRange>

<CharacterStyleRange FillColor="">
        <Properties>
            <AppliedFont type="string">Agency FB</AppliedFont>
        </Properties>
    <Content>ben een zin</Content>
</CharacterStyleRange>

<CharacterStyleRange FillColor="" FontStyle="Bold">
        <Properties>
            <AppliedFont type="string">Agency FB</AppliedFont>
        </Properties>
    <Content>Met bold</Content>
</CharacterStyleRange>

由此:

Hallo [bold]ik[/bold] ben een zin [bold]met bold[/bold]

基本上我想要的是用[bold] [/ bold]标签去掉句子,并为它创建一个新的(包含所有其他项目)。

我已经尝试了几件事但是没有能够正常工作,所以现在我在这里问。

它必须转换成的语言是IDML(这种语言用于构建InDesign文档)

2 个答案:

答案 0 :(得分:0)

我认为您可以使用正则表达式来提取[bold]中包含的所有这些文本。

var exp = "[bold]ik[/bold]";
var re = exp.match(/\[bold\](.*)\[\/bold\]/); //=> Array [ "[bold]ik[/bold]", "ik" ]
return re[1];

您将获得"ik"

答案 1 :(得分:0)

也许此资源对您有所帮助: https://regex101.com/r/xU5jO9/2 我的正则表达式是在右侧解释的。

在您的控制台中尝试此操作:

var myString = "Hallo [bold]ik[/bold] ben een zin [bold]met bold[/bold]";
var regex = new RegExp(/(\[bold\]?)(.*?)(\[\/bold\]?)/gi);
var replacePattern = "<CharacterStyleRange FillColor=\"\">     <Properties>         <AppliedFont type=\"string\">$2</AppliedFont>     </Properties>     <Content>Hallo</Content> </CharacterStyleRange>";

myString.replace(regex, replacePattern);

我还没有测试它,但在控制台外面它应该保持断线。否则,在像sublime这样的文本编辑器中打开你的项目,并在那里做同样的事情。最好先制作一个copy / git commit。在Sublime中使用\2代替$2

编辑:我添加了?非贪婪的运算符,否则它将从第一个粗体开始标记到最后一个结束标记匹配。