答案是使用正则表达式。
有人可以为我解释下面的代码只是正则表达式部分吗?
我已经阅读了一些关于正则表达式的文章,但我认为我并没有完全理解它。
如果可能,我想将其转换为c#代码,但我还不能这样做,因为我不完全理解代码。谢谢
第一个代码
$(function() {
function removeNode(str, nodeName) {
var pattern = '<'+nodeName+'>[\\s\\w]+<\/'+nodeName+'>';
var regex = new RegExp(pattern, 'gi');
return str.replace(regex, '').replace(/^\s*[\r\n]/gm, '');
}
我在第一段代码中没有提到的是'gi'来自哪里? 和回报
var regex = new RegExp(pattern, 'gi');
return str.replace(regex, '').replace(/^\s*[\r\n]/gm, '');
第二个代码
$(function() {
function removeNodeButRetain(str, nodeName) {
var pattern = '<\/?'+nodeName+'>';
var regex = new RegExp(pattern, 'gi');
return str.replace(regex, '').replace(/^\s*[\r\n]/gm, '');
}
what i dont understand is the
var regex = new RegExp(pattern, 'gi');
return str.replace(regex, '').replace(/^\s*[\r\n]/gm, '');
第三个代码
jQuery(document).ready(function(){
textval = $('textarea').val();
textnewval = textval.replace('Para TextBreak="No"', 'p').replace('/Para', '/p');
if(textnewval.indexOf('Italic') >= 0) //If Italic
{
EmphasisAttr = 'Italic';
textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'i').replace('/Emphasis', '/i');
}
if(textnewval.indexOf('Bold') >= 0) //If Bold
{
EmphasisAttr = 'Bold';
textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'b').replace('/Emphasis', '/b');
}
if(textnewval.indexOf('Underline') >= 0) //If underline
{
EmphasisAttr = 'Underline';
textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'u').replace('/Emphasis', '/u');
}
$('textarea').val(textnewval);
alert($('textarea').val());
});
答案 0 :(得分:4)
正则表达式:http://regexr.com/3dr56
将匹配包含以下内容的任何节点:
<div>hello world</div>
前提是传递给函数的参数:
function removeNode(str, nodeName) {
var pattern = '<'+nodeName+'>[\\s\\w]+<\/'+nodeName+'>';
var regex = new RegExp(pattern, 'gi');
return str.replace(regex, '').replace(/^\s*[\r\n]/gm, '');
}
console.log("Node: <div>hello world</div>");
var str = removeNode("hello world", "div");
console.log("String returned: " + str);
&#13;
是:
节点匹配:<div>hello world</div>
removeNode("hello world", "div");
将返回:
hello world
函数本身将返回节点内的string
。
有关Regular Expressions的更多信息,请点击此处。
答案 1 :(得分:2)
这是值得的,这是一个仅使用jQuery完成的解决方案。
您可以使用服务器端XML解析器执行类似的操作
用于搜索和替换的数据:
// selector = jQuery selector, final = replacement element
var tags = [{
selector: 'emphasis[Type="Italic"]',
final: '<i>'
}, {
selector: 'emphasis[Type="Bold"]',
final: '<strong>'// note <b> is deprecated
}, {
selector: 'emphasis[Type="Underline"]',
final: '<u>'
}, {
selector: 'para',
final: '<p>'
}
];
<强>分析器:强>
$(function() {
// get string to parse
var str = $('#txtArea').val();
// inject in temporary div
var $tempdiv = $('<div>').html(str);
// loop over all the tags to replace
$.each(tags, function(_, tag) {
// loop and replace instances of tags
$tempdiv.find(tag.selector).replaceWith(function() {
return $(tag.final).html( $(this).html())
});
});
// get final string from temp div
var finalString = $tempdiv.html()
// update textarea
$('#final').val(finalString );
});
的 DEMO 强>