所以我正在研究在d3中制作的标签云示例。
我试图在每个单词悬停时定位一个Div ontop,并且我基本上遇到了问题,因为我放置div的方式取决于svg单词元素的transform属性。
此transform属性是我需要解析的字符串,但该字符串包含我需要抓取的正值和负值。
tagCloudHover.style("top", function(){
//parses the words attributes for its position, and gives that position to tagCloudHover
var str, matches, index, num;
str = thisWord.attr("transform");
matches = str.match(/\d+/g);
for (index = 1; index < 2; ++index) {
num = (parseInt(matches[index], 10));
}
if(num<0){
return -num+"px";
}else{
return num+"px";
}
});
我的代码如上所述,其中最后一个语句什么都不做,但它能够从字符串中获取一个Int。问题是它不会抓住负号。
我不是最好的解析,但我尝试了几个不同的str.match函数,似乎没有任何工作。
任何parseNinjas有什么想法吗? 什么有帮助。 艾萨克
答案 0 :(得分:2)
您的正则表达式应为/-?\d+/g
,基本上会在模式中添加“可选-
”。
答案 1 :(得分:1)
如果您知道需要解析的值,可以将负数乘以-1
示例:
num = -1 * (parseInt(matches[index], 10));