【问题标题】:How to get value at a specific index In JavaScript?如何在 JavaScript 中的特定索引处获取价值?
【发布时间】:2014-11-19 19:19:54
【问题描述】:

我有这个字符串 = 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);
    });

【问题讨论】:

标签: javascript


【解决方案1】:

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

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'
}

【讨论】:

  • 非常干净。不错的方法。
【解决方案2】:

使用正则表达式匹配。您可以在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】:

    给你。

    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)
    

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

    【讨论】:

    • rgb(192, 194, 194) 0 -10px 0px 现在呢?
    • 更新的版本可以处理这两种情况。可以肯定地清理一下,但它有效。
    【解决方案4】:

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

    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 更好地说明了上述情况。

    【讨论】:

    • 感谢大家的帮助。感谢您的快速回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多