Javascript String Заменить - PullRequest
       17

Javascript String Заменить

3 голосов
/ 07 февраля 2010

У меня есть строка тегов, разделенных точкой с запятой:

"red; yellow; blue; green; purple"

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

Например, если у меня есть подстрока "Bl", я хотел бы вернуть "синий".

Есть предложения, как лучше всего это сделать в javascript? В частности, мне интересно, есть ли одношаговый метод для этого в регулярном выражении ...

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 07 февраля 2010

Сначала анализируйте строку в массиве, используя split (), после этого выполняйте итерацию по массиву и ищите совпадения, используя match или indexOf для элементов. в массиве. Если вы хотите проверить без учета регистра, вы можете использовать регулярное выражение без учета регистра в сопоставлении или выполнить toLowerCase для всех сравниваемых элементов.

1 голос
/ 07 февраля 2010

Вы можете использовать что-то вроде этого:

var needle = 'blu';
var s = 'red; yellow; blue; geen; purple';
var a = s.split('; ');
var newArray = new Array();
for (var i = 0; i < a.length; i++) {
    if (a[i].indexOf(needle) != -1) {
        newArray.push(a[i]);
    }
}
var result = newArray.join('; ');
alert(result);

Метод в основном такой, как описал Саймон, с одним дополнительным шагом - join в конце, чтобы преобразовать результат обратно в строку.

Просто для удовольствия, вот сумасшедшее решение на основе регулярных выражений. Предупреждение: если ваш поисковый термин содержит специальные символы, их нужно будет экранировать. Я предполагаю, что поисковый термин будет содержать только не специальные символы:

var s = 'red; yellow; blue; geen; purple';
var result = ('; ' + s).replace(/;(?![^;]*blu)[^;]*(?=;|$)/g, '').substring(2);
alert(result);
0 голосов
/ 07 февраля 2010
function find_substring(tags, search){
 var tags_array = tags.split(";");
 var found_tags = [];
 for(var i=0; i<tags_array.length; i++){
  if(tags_array[i].indexOf(search) > -1){
    found_tags.push(tags_array[i]);
  }
 }
 if(found_tags.length > 0){
  return found_tags.join("; ");
 }else{
  return false;
 }
}

var tags = "red; yellow; blue; geen; purple";
var search = "blue";
find_substring(tags,search);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...