如何比较字符串中的值

时间:2012-11-19 16:22:28

标签: javascript jquery

我想在某些条件下比较2个值。

如果$(".value1").text()$(".value2").text()"v"开头,请检查是否 $(".value1").length的数量(在这种情况下为0.1))< $(".value1").length(在这种情况下为0.4)

<div class="value1">v0.1</div>
<div class="value2">v0.4</div>

首先,我想检查div的值是否以"v"开头,然后我要比较"v"之后的值。

我该怎么做?语法怎么样?

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:9)

我建议您阅读JavaScript中可用的各种String方法。

在这种情况下,您需要charAt(以确定第0个字符是否为“v”)和substring(或substr)以获取{之后的部分{1}}。然后,您需要parseFloat将其转换为数字。或者,作为bad syntax points out,你可以使用正则表达式(虽然如果你做的话,我不会完全按照他/她所做的那样去做,我希望进一步使用它),但这可能比必要的更复杂。

上面的链接符合规范,但可能很难。有很多书籍和网站可供学习JavaScript的基础知识。 Mozilla's MDN是一个不错的参考网站。

答案 1 :(得分:2)

这是一个如何从元素中获取字符串数据,将其转换为整数并进行比较的示例。 http://jsfiddle.net/svcH9/1/

$(document).ready(function () {
    // get elements
    var v1 = $('.value1').text(),
        v2 = $('.value2').text();
    // check requirements
    if (isVersionString(v1) === true && isVersionString(v2) === true) {
        // replace the v and cast to float
        v1 = getVersion(v1);
        v2 = getVersion(v2);

        // test
        $('body').append(v1).append(v2);

        // simple compare
        if (v1 < v2) {
            alert('Value two is greater than value one');
        }
    }
});

function isVersionString(value) {
    return /^v[0-9\.]{0,}$/.test(value);            
}

function getVersion(value) {
    return parseFloat(value.replace('v', ''), 10);
}

答案 2 :(得分:1)

  var value1 = $('.value1').text();
  var value2 = $('.value2').text();

  if (value1.indexOf('v') == 0 && value2.indexOf('v') == 0) {
    var version1 = parseFloat(value1.substring(1), 10);
    var version2 = parseFloat(value2.substring(1), 10);
    if (version1 > version2) {
      document.write(value1 + ' > ' + value2);
    }
    else if (version1 < version2) {
      document.write(value1 + ' < ' + value2);
    }
    else {
      document.write(value1 + ' == ' + value2);
    }
  }

一个工作示例:http://jsfiddle.net/Kncf4/

答案 3 :(得分:0)

正则表达式解决方案:

var val1 = $.trim($(".value1").text());
var val2 = $.trim($(".value2").text());
var hasV = (/^v/.test(val1) && /^v/.test(val2));

if (hasV) {

    var num1 = parseFloat(val1.replace(/v/, ''));
    var num2 = parseFloat(val2.replace(/v/, ''));

    if (num1 < num2) {
        alert('yes');
    }
}