如何检查'string1'是否在'string1,string2,string3,.. stringn'中

时间:2012-01-27 13:58:40

标签: javascript jquery string

我将一个锚的.text()附加到输入中,当它被拖放到输入时。

问题是我需要他们逗号,而不是重复:

如果我想在值'string 1'时将'bla, ble, string1'添加到输入中,我需要防止重复,

你会怎么做?

我的第一个猜测是通过','进行爆炸并将其与for循环结合起来,但我认为这根本不是最优化的。

4 个答案:

答案 0 :(得分:2)

基本理念

function addParameter(str, param) {
    var re = new RegExp("[^,]\\s?" + param + "[,$]","g");
    if( !re.test(str) ) {
        str += ( (str.length>0) ? ", " : "") + param;
    }
    return str;
}

var orgStr = "abc, def, hij";

//This exists so it will not be added
var newStr = addParameter( orgStr, "def" );
console.log( newStr );

//This does not exist so it will be added to the end
newStr = addParameter( orgStr, "xyz" );
console.log( newStr );

解释正则表达式

  • [^,]\\s? - 表示匹配字符串的开头或逗号后跟可选的空格字符
  • param - 匹配您在
  • 中传递的字符串
  • [,$] - 表示匹配逗号或字符串的结尾。

答案 1 :(得分:0)

将现有的CSV字符串转换为数组,追加您的值,然后将其转换回字符串:

//Create an array from the CSV list
var myVals = $("#YourElement").val().split(",");
var isDupe = false;

for(var i = 0; i < myVals.length; i++) {
    if(myVals[i].indexOf("YourNewValue") != -1) {
        isDupe = true;
        break;
    }
}

//use .push() to append your value to the end of the array
if(!isDupe) {
    myVals.push("YourNewValue");

    //Invoking .toString() on an array creates a CSV list
    $("#YourElement").val(myVals.toString());
}

这是a working fiddle

答案 2 :(得分:0)

根据你的小提琴你可以;

var myVals = $("#YourElement").val().split(",");
var wantToAdd = "cakey";

if ($.inArray(wantToAdd, myVals) === -1)
   myVals.push(wantToAdd);

$("#YourElement").val(myVals.join(","));

答案 3 :(得分:0)

我认为不需要reg exp或array -

var t=input.value, s= //text string;
if(t.indexOf(s)==-1)t.value=t+ ', '+s;