2012-08-08 25 views
1

所以我正在通過在d3中製作的標籤雲示例。爲ints分析字符串正面和負面,Javascript

http://www.jasondavies.com/wordcloud/#http%3A%2F%2Fsearch.twitter.com%2Fsearch.json%3Frpp%3D100%26q%3D%7Bword%7D=cloud

,我試圖定位一個div ontop的每一個字,當它盤旋過來,我基本上有一個問題,因爲我把股利的方式取決於SVG字的變換屬性元件。

這個轉換屬性是一個我需要解析的字符串,但是這個字符串包含了我需要抓取的正值和負值。

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有什麼想法嗎? 任何幫助。 Isaac

+0

什麼是你想與'for'循環呢?它只會有一次迭代。另外,考慮到你最後的'if'語句似乎正在取一個負數,並把它變成一個正數,爲什麼不保留當前正則表達式只抓取數字而忽略if/else? – nnnnnn 2012-08-08 22:34:59

回答

2

你的正則表達式應該是/-?\d+/g,基本上在模式中增加了「可選-」。

+0

男人我討厭/愛它當答案在我面前的整個時間! – Cabbibo 2012-08-08 22:41:50

+0

失敗時:minussign空格 – 2014-10-23 13:31:32

+0

@MichałWereda首先這不是有效的輸入。 – 2014-10-23 13:32:23

1

如果你知道你需要分析你可以只用-1

例乘消極的什麼值:

num = -1 * (parseInt(matches[index], 10)); 
相關問題