2016-10-16 5 views
-3

У меня есть следующиеJavascript заменить точную строку соответствия

var string = '1,7,12,15,16,29';

, если я просто хочу, чтобы заменить номер 1, я буду использовать следующие

removeStr(1); 

function removeStr(str1) 
     { 
      var string = '1,7,12,15,16,29'; 
      var newstr = string.replace(str1, ''); 
      alert('new val is ' + newstr); 
     } 

Но делая это, в конечном итоге удаление номер 1 в 12,15,16.

Как просто удалить точное соответствие в этом примере.

спасибо

+1

«* Но делать это, в конечном итоге удаление номер 1 в 12,15, 16. * "- не так ли? Я уверен, что в вашем опубликованном коде он удалит только первое появление символа «1». –

+0

Ваш код производит 'new val is, 7,12,15,16,29'. 'replace' заменяет только первое совпадение – Oriol

ответ

0

Вы можете использовать границы (\b) в регулярном выражении, что соответствует только целому слову. Измененный тестовую строку на один, где ваш вопрос будет применяться

function removeStr(str1) 
 
{ 
 
    var string = '11,71,12,1,16,21'; 
 
    var newstr = string.replace(new RegExp("\\b"+str1+"\\b"), ""); 
 
    console.log('new val is ' + newstr); 
 
} 
 

 
removeStr("1");

-1

Вы пытаетесь сделать это на строках. вы могли бы рассмотреть, чтобы сделать ему массив

var string = '1,7,12,15,16,29'; 
 
var arr=string.split(","); 
 
var newArr=arr.splice("1"); 
 
string=newArr.join(","); 
 
console.log(string);

Надеется, что это помогает

0
function replaceOne(str1, str2){ 
var arr = str2.split(","); 

var newStr = ""; 

for(var i=0; i<arr.length; i++){ 
    if(arr[i]!=str1){ 
     newStr = (newStr=="")?arr[i]:newStr+","+arr[i]; 
    } 
} 

console.log(newStr); 

}

+0

Пожалуйста, добавьте объяснение того, как этот код помогает OP. Код без объяснений не помогает будущим посетителям. Кроме того, взгляните на [Как мне форматировать блоки кода?] (Http://meta.stackoverflow.com/q/251361/215552) в FAQ. –