Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用[粗体]标记去掉句子_Javascript_Json_Idml - Fatal编程技术网

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


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

@ChrisDavis
var 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);