如果我在页面上创建了两个方括号之间的字符串,那么如何将该值存储在变量中并删除方括号?
示例
[String I want]
所以我留下了
var mystring = "String I want"
更新:看来我无法回复你们。所以必须采取行动。无论如何 这就是我正在使用的
var wholeParagraph = $('.comment-body p');
var rating = wholeParagraph.substring(wholeParagraph.indexOf('['), 1+wholeParagraph.lastIndexOf(']'));
alert(rating);
似乎不起作用?
答案 0 :(得分:3)
这是一个版本,它也可以处理任何前导或尾随空格(以及嵌套括号):
// This works
var str = "[String I want]";
var mystring = str.substring(str.indexOf('['), 1+str.lastIndexOf(']'));
// But it'll also work with these strings:
var str = " [String I want] "; // returns "String I want"
var str = " [string I [really] want] "; // returns "String I [really] want"
答案 1 :(得分:1)
"[String I want]".replace(/^\s*\[|\]\s*$/g, '');
这应该会给你你想要的东西。您还可以使用trim函数从字符串中取出第一个和最后一个字符,类似于PHP的trim,您可以在其中提供可选的分隔符。
更新:领先和尾随空白容忍
答案 2 :(得分:0)
我更喜欢Andrew Noyes的答案。 我不能投票并明确表示这比其他更好,所以这是获得你想要的字符串的另一种可能性..
str = str.substr(1,str.length -2);
答案 3 :(得分:0)
只有一种可行的方法:逐步浏览DOM并在每个文本节点中搜索匹配。
这个功能就是这样:
function findTextNodeWithMatch(regex, context) {
context = context || document.documentElement;
var childNodes = context.childNodes,
retTextNodes = [],
i = -1, node;
while ( node = childNodes[++i] ) {
if (node.nodeType === 3) {
var m;
while (m = regex.exec(node.data)) {
retTextNodes.push({
node: node,
match: m
});
}
}
if (node.nodeType === 1 && node.nodeName.toLowerCase() !== 'script') {
retTextNodes = retTextNodes.concat( arguments.callee( regex, node ) );
}
}
return retTextNodes;
}
用法:
var patternToMatch = /\[((?:\\\[|.)*)\]/g;
var matchingNodes = findTextNodeWithMatch( patternToMatch, $('.comment-body p')[0] );
for (var i = 0, len = matchingNodes.length; i < len; i++) {
// Loop through the matching nodes:
// Extract the string you want:
var theMatch = matchingNodes[i].match;
var myString = theMatch[1];
alert( myString );
// Replace the string within the node:
var theNode = matchingNodes[i].node;
theNode.parentNode.replaceChild( document.createTextNode(theNode.data.replace(patternToMatch, '')), theNode );
}
使用元素的 innerHTML
是不可靠的,因为它可能包含其他元素,并且这些元素可能具有与您要查找的属性相匹配的属性 - 您不想删除它们错误的......
答案 4 :(得分:0)
结合评论和其他答案......
var rating = $('.comment-body p').html().replace(/^\[\]$/g, '');
alert(rating);
答案 5 :(得分:-1)
使用字符串对象slice()方法删除第一个和最后一个字符:
str = str.slice(1,-1);