2016-10-16 4 views
-3

Ich habe folgendeJavascript ersetzen exakte Übereinstimmung Zeichenfolge

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

, wenn ich nur die Nummer 1 ersetzt werden soll, wird verwende ich die folgende

removeStr(1); 

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

Aber dies zu tun, wird die Nummer 1 in 12,15,16 am Ende zu entfernen.

Wie entferne ich einfach die genaue Übereinstimmung in diesem Beispiel.

Dank

+1

„* Aber das tut, wird das Entfernen am Ende die Nummer 1 in 12,15, 16. * "- Wird es? Ich bin mir ziemlich sicher, dass es in Ihrem geposteten Code nur das erste Vorkommen des Zeichens "1" entfernt. –

+0

Ihr Code erzeugt 'new val is, 7,12,15,16,29'. 'replace' ersetzt nur die erste Übereinstimmung – Oriol

Antwort

0

Sie Grenzen nutzen könnten (\b) in einem regulären Ausdruck, dass nur ein ganzes Wort übereinstimmen. Changed Ihren Test Zeichenfolge ein, wo Ihre Frage anwendbar wäre

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

Sie versuchen es auf Strings zu tun. Sie könnte es für

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

Hoffnung, ein Array zu machen, das hilft

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

Bitte fügen Sie eine Erklärung hinzu, wie dieser Code dem OP hilft. Code ohne Erklärung hilft zukünftigen Besuchern nicht. Werfen Sie auch einen Blick auf [Wie formatiere ich meine Code-Blöcke?] (Http://meta.stackoverflow.com/q/251361/215552) in den FAQ. –

Verwandte Themen