Javascript 用[粗体]标记去掉句子
我需要制作一个脚本来生成以下代码:Javascript 用[粗体]标记去掉句子,javascript,json,idml,Javascript,Json,Idml,我需要制作一个脚本来生成以下代码: <CharacterStyleRange FillColor=""> <Properties> <AppliedFont type="string">Agency FB</AppliedFont> </Properties> <Content>Hallo</Content> </CharacterStyleRange> &l
<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>
基本上,我想要的是用[bold][/bold]标记去掉句子,并为它创建一个新的(包括所有其他项目,如图所示)
我已经尝试了一些方法,但是没有能够使它正常工作,所以现在我在这里问它
必须转换成的语言是IDML(这种语言用于构建InDesign文档)我认为您可以使用正则表达式提取
[bold]
中包含的所有文本
var exp = "[bold]ik[/bold]";
var re = exp.match(/\[bold\](.*)\[\/bold\]/); //=> Array [ "[bold]ik[/bold]", "ik" ]
return re[1];
您将获得
“ik”
也许此资源对您有帮助:
右边是我的正则表达式
在控制台中尝试以下操作:
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);
var myString=“你好[bold]ik[/bold]ben een zin[bold]met bold[/bold]”;
var regex=new RegExp(/(\[bold\]?)(.*)(\[\/bold\]?)/gi);
var replacePattern=“$2你好”;
replace(regex,replacePattern);
我还没有测试它,但在控制台外,它应该可以保持线路中断。否则,在sublime这样的文本编辑器中打开您的项目,并在那里执行同样的操作。最好先复制/git提交。在崇高中使用\2
而不是$2
编辑:我添加了
?
非贪婪运算符,否则它将从第一个粗体开始标记匹配到最后一个结束标记。@ChrisDavisvar str=“Hallo[bold]ik[/bold]ben een zin[bold]met bold[/bold]”;var spited=str.split(“[bold]”);console.log(spited.toString().replace(“,”,“).split([/bold]”);如果(str.indexOf(“[bold]”)!=-1){console.log(str.indexOf(“[bold]”+”包含[bold]”;}否则{console.log(str.indexOf(“[bold]”+”不包含[bold]”;}
看起来需要将str.split(“
和regex
组合起来。在这种情况下你可以使用正则表达式吗?@benjaminz你被允许使用它是什么意思?你能给我举个例子吗?谢谢,虽然这不是我的意思。我想去掉[bold][/bold]标记,并从[bold][/bold]标记之间的内容生成此代码:Agency FB ik
对于[bold]标记中没有的内容,我想要此代码:Agency FB Hallo
@Ivarr08,然后可以添加字符串的其他部分“代理FB Met bold”和您提取的数据。
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);