jQuery - Parse &转换标记文本
jQuery - Parse & convert markedup text
使用jQuery如何转换此文本
The quick]] brown [[fox]] jumps over the lazy [[dogs [[back]]
到
The quick]] brown <span class="gist">fox</span> jumps over the lazy <span class="gist">dogs [[back</span>
?
使用javascript:
var string = "The quick brown [[fox]] jumps over the lazy [[dogs back]]"
string = string.replace(/'['[/g, '<span class="gist">').replace(/']']/g, '</span>');
这是使用正则表达式查找[[
并将其替换为<span class="gist">
,然后查找]]
并将其替换为</span>
。因为[
和]
都是regex中的特殊字符,它们必须用反斜杠转义('
),并且我们希望替换是全局的(例如:替换多个实例),这给了我们:/'['[/g
和/']']/g
。
如果您需要处理未闭括号,则必须使用不同的方法,例如状态机:
var string = "The quick]] brown [[fox]] jumps over the lazy [[dogs [[back]]";
var state = 'NO_TAG';
var parts = [];
for(var i = 0; i < string.length; i += 1) {
if(string[i] === "[" && string[i+1] === "[" && state === 'NO_TAG') {
parts.push('<span class="gist">');
i += 1;
state = 'TAG';
} else if (state === 'TAG' && string[i] === "[" && string[i+1] === "[") {
i += 1; // ignore start brackets if we are in a tag.
} else if (state === 'TAG' && string[i] === "]" && string[i+1] === "]") {
parts.push('</span>');
i += 1;
state = 'NO_TAG';
} else if (state === 'NO_TAG' && string[i] === ']' && string[i+1] === ']') {
i += 1; // ignore end brackets if we are not in a tag.
} else {
parts.push(string[i]);
}
}
string = parts.join('');
我不能保证这个状态机在所有情况下都能工作,但它可以与您的测试字符串一起工作。
这样不是更好吗?
str.replace(/'['[(.*?)']']/g, '<span class="gist">$1</span>');
相关文章:
- 将格式化的纯文本转换为HTML
- 使用带有文本转换的jquery获取文本
- 如何在节点.js上将文本转换为 Base58
- 将 Javascript 数组中的文本转换为超链接
- 输入占位符文本转换CSS样式
- JavaScript将缩进文本转换为HTML列表重复顶层<李>'s为<ul>'s
- Fabric.js文本转换不起作用
- 单击“编辑”按钮,将文本转换为文本框
- 在javascript中将转义文本转换为html
- JavaScript文本转换
- 正在将Fabric.js文本转换为路径
- Kendo UI-将Text()括起来的文本转换为<span>编码HTML
- 将Blob文本转换为Javascript中的数组/JSON对象
- javascript函数和HTML中的文本转换/动画onclick
- 将文本转换为 JavaScript 对象或数组
- jQuery - 将文本转换为谷歌地图链接
- 无法将文本转换为 JavaScript 数组
- Jquery/Javascript 解决方案,用于将 wiki 文本转换为 HTML,反之亦然
- 在 JavaScript 中将文本转换为日期/时间对象
- JS:将文本转换为对象数组