使用Javascript从字符串中提取子字符串

6

大家好,

我有以下的html代码字符串在javascript中。我需要提取"value"中的字符串,按照指定的分隔符"|"拆分,并将其放入两个变量中。

var html = '<div><input name="radBtn" class="radClass" style="margin:auto;" 
       onclick="doSomething();"
       value="Apples|4567" type="radio">
</div>';

需要输出的是两个变量,具有以下值:

fruitName = Apples
fruitNumber = 4567

注意:可以有多个名称相同的单选按钮。

1
这个帖子里的每个回答者都没有认真阅读问题。这不是HTML,而是一个字符串。 - wdm
6个回答

9

如果您可以假设您的HTML始终是简单的(即只有一个值属性,没有其他看起来像值属性的东西),那么您可以这样做:

var fruit = html.match(/value="(.*?)\|(.*?)"/);
if (fruit) {
    fruitName = fruit[1];
    fruitValue = fruit[2];
}

2
我真的需要在正则表达式方面变得更加熟练。 :/ - mattsven
@Vincent 我在我的正则表达式中加了一个额外的 ? ,以防字符串中还有另一个 | - Neil

2

以下是如何操作的步骤:

$("input[name='radBtn']").click(function(){
    var val = $(this).val();
    val = val.split("|");

    var fruit = val[0];
    var number = val[1];
});

1
var div = document.createElement("div");
div.innerHTML = '<input name="radBtn" class="radClass" style="margin:auto;" onclick="doSomething();" value="Apples|4567" type="radio"></div>';  

var str = div.getElementsByTagName("input")[0].split("|");

var fruitName = str[0];
var fruitNumber = str[1];

/*
Now,
fruitName = "Apples"
and
fruitNumber = 4567
*/

我认为你想要在defaultValue属性或value属性上调用split,而不是在input元素本身上调用。 - Neil

1
这是一种方法:
var fruit = (function() {
    var fruits = $(html).find('.radClass').val().split('|');
    return {
        fruitName: fruits[0],
        fruitNumber: fruits[1]
    };
}());

你会得到一个像这样的对象:

fruit.fruitName // Apples
fruit.fruitNumber // 4567

0

我该如何首先从HTML字符串中获取值? - Jake

0
$(function() {
    $("INPUT[name=radBtn]").click(function() {
        var value = $(this).val().split("|");
        var fruitName = value[0];
        var fruitNumber = value[1];

        // Add to an array, ajax post etc. whatever you want to do with the data here
    });
});

我无法点击单选按钮..它在一个HTML字符串中..请再次查看问题..谢谢 - Jake
啊,我明白了,你想在将字符串附加到DOM之前获取其中的值。不知道可以问一下为什么吗? - Rory McCrossan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接