如何在JavaScript中获取特定索引的值?

时间:2014-11-19 19:19:54

标签: javascript

我有这个字符串= rgb(192,194,194)-10px -10px 0px; 我需要获得该字符串中的第一个-10px并存储为变量。这个数字是动态的,会发生变化。

感谢您的帮助。 这就是我所拥有的。我正在抓住跨度的文本阴影,需要获得将添加到工具提示的-10px值。这是一个动态数字,会根据用户点击滑块的位置而改变。我只是想弄清楚如何解析该字符串以获得-10px值。

 $('.slider-track.shadow').on('click', function (e) {
        e.preventDefault();
        var currentValue = $('.editing').find('span').css('text-shadow');
        var replaceValue = currentValue.replace(/\D/g, '');

        console.log(currentValue);
        $('.tooltip-inner.shadow').text(currentValue);
    });

4 个答案:

答案 0 :(得分:2)

这个正则表达式应该可以解决问题。

var str = "rgb(192, 194, 194) -10px -10px 0px;";
var m = str.match(/(.[^)][^\s]*)+\s(.*)+\s/);

if ((m instanceof Array) && m[1]) {
    console.log(m[1].trim()) // '-10px'
}

答案 1 :(得分:0)

你走了。

var stringToUse = "rgb(192, 194, 194) -10px -10px 0px",
start = stringToUse.lastIndexOf(')'),
end = stringToUse.indexOf('px');

stringToUse = stringToUse.substring(start +1, end).trim();

//outputs "-10"

希望这有帮助。

从问题更新。

var stringToUse = "rgb(192, 194, 194) 0 -10px 0px",
start = stringToUse.lastIndexOf(')') + 1,
end = stringToUse.slice(start).trim().indexOf(" ");
stringToUse = stringToUse.slice(start).trim()
stringToUse.slice(0, end)

效果更好,或者您可以使用Reg表达式,如其他答案所述。

答案 2 :(得分:0)

使用Regexp匹配。您可以在RegExp doc

找到更多信息
var x = "rgb(1,2,3) 0px 10px -20px"
var y = x.match(/\) ([+-]?[0-9]*px)/)
var z = x.match(/\) ([+-]?[a-z]*px)/)
console.log("original=",x,"; good match=",y,"; no match=",z)
//prints
original= rgb(1,2,3) 0px 10px -20px ; good match= [") 0px", "0px"] ; no match= null

HTH。 RegExp可以为您做更多的事情。

答案 3 :(得分:0)

这是一个带有一些解释的正则表达式示例:

var str = "rgb(192, 194, 194) -10px -10px 0px;";
var results = str.match(/.*\)\s?([^\s]*)/);

console.log(results); // ["rgb(192, 194, 194) -10px -10px 0px;", "-10px"]

分手:

  • *)匹配所有内容,直到它看到的第一个“)”。
  • \ s?可选择匹配空格。
  • ([^ \ s] *)/)将匹配所有内容,但不包括它看到的下一个空格。这被放置在捕获组中

此在线正则表达式应用here更好地说明了上述内容。