Как проверить, находится ли 'string1' в 'string1, string2, string3, .. stringn' - PullRequest
2 голосов
/ 27 января 2012

Я добавляю .text() привязки к входу, когда он перетаскивается на него.

Дело в том, что они нужны мне через запятую и не повторяются:

Если я пытаюсь добавить 'string 1' к входу, когда значение уже 'bla, ble, string1', мне нужно предотвратить дублирование,

Как бы вы это сделали?

Мое первое предположение - сделать разнесение по ',' и объединить его с циклом for, но я не думаю, что он действительно оптимизирован вообще.

Ответы [ 4 ]

2 голосов
/ 27 января 2012

Базовая идея

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 - соответствует вашей строке, переданной в
  • [,$] - говорит, что соответствует запятой или концу строки.
0 голосов
/ 27 января 2012

Я не вижу необходимости в reg exp или array-

var t=input.value, s= //text string;
if(t.indexOf(s)==-1)t.value=t+ ', '+s;
0 голосов
/ 27 января 2012

На основе вашей скрипки вы можете;

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

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

$("#YourElement").val(myVals.join(","));
0 голосов
/ 27 января 2012

Преобразуйте существующую строку 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());
}

Вот рабочая скрипка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...