2012-04-24 7 views
-1

Как я могу заменить:Заменить часть строки в JavaScript

var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations(1002)?$expand=Stations"; 

по:

var nameInstallation = 1002; 
    var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations(nameInstallation)?$expand=Stations"; 
+0

вы спрашиваете, как заменить что-то в строке на другое значение? –

ответ

0

Попробуйте эту яваскрипта функция

// from http://www.codeproject.com/Tips/201899/String-Format-in-JavaScript 
     String.prototype.format = function (args) { 
      var str = this; 
      return str.replace(String.prototype.format.regex, function(item) { 
       var intVal = parseInt(item.substring(1, item.length - 1)); 
       var replace; 
       if (intVal >= 0) { 
        replace = args[intVal]; 
       } else if (intVal === -1) { 
        replace = "{"; 
       } else if (intVal === -2) { 
        replace = "}"; 
       } else { 
        replace = ""; 
       } 
       return replace; 
      }); 
     }; 
     String.prototype.format.regex = new RegExp("{-?[0-9]+}", "g"); 

и использование:

var url = "http://localhost:2879/ServiceDonneesArchive.svc/Installations{0}?$expand=Stations"; 
var nameInstallation = 1002; 
var result = url.format(nameInstallation); 
+0

не работает. Нет ли более простого способа? Я уже не понимаю вашу функцию. Вы можете это объяснить? спасибо – user1353975

+0

Насколько я знаю, вам нужно создать метод для моделирования строки. Форматировать java. Проверьте этот пост, я попробовал его и работает: http://frogsbrain.blogspot.com.es/2007/04/javascript-stringformat-method.html –

+0

ok Я попробую. Но это потрясающе, они не думали, чтобы закодировать эту функцию, которая кажется удобной. – user1353975

1

Зачем это трудно? Для этого случая использования, простая конкатенация будет очень читаемой:

var nameInstallation = 1002; 
var url = 'http://localhost:2879/ServiceDonneesArchive.svc/Installations(' + nameInstallation + ')?$expand=Stations'; 
1

Используйте .replace() method. Для того, чтобы заменить все экземпляры "nameInstallation" в вашей url переменной с "1002":

url = url.replace(/nameInstallation/g, "1002"); 

Или если у вас есть значение замены в переменной nameInstallation = 1002:

url = url.replace(/nameInstallation/g, nameInstallation); 

EDIT: Как отмечалось Дэвид Томас, вы, вероятно, не нужен флаг g в регулярном выражении, который является первым параметром .replace(). С помощью этого «глобального» флага он заменит все экземпляры текста «nameInstallation». Без флага он заменит только первый экземпляр. Поэтому либо включите его, либо оставите его в соответствии с вашими потребностями. (Если вам нужно только заменить первое вхождение, вы также можете передать строку как первый параметр, а не регулярное выражение.)

+1

Вам нужен 'g'? Я понимаю, что в будущем его прецедент может измениться, но для этого случая он не нужен. В любом случае, вероятно, стоит объяснить, что он делает. –

+0

Спасибо @David - ответ обновлен. – nnnnnn

Смежные вопросы