Замена двоеточия с помощью строки replace с помощью Javascript и jQuery

У меня есть простая строка, которую я пытаюсь манипулировать:

Ваш заказ будет обработан в ближайшее время:

Я беру строку, используя:

var html = jQuery('.checkout td h4').html();

Затем я пытаюсь заменить ':', используя:

html.replace(":", ".");

Когда я печатаю его на консоли, строка такая же, как и исходная строка. Я также попытался убедиться, что переменная html имеет тип "строка", выполнив следующие действия:

html = html + "";

Это ничего не делает. При поиске вокруг кажется, что функция replace выполняет поиск в RegEx и что символ ":" может иметь особое значение. Я не знаю, как это исправить. Может ли кто-нибудь помочь мне избавиться от этой толстой кишки?

4 ответа

Функция replace возвращает новую строку с выполненными заменами. Строки Javascript неизменяемы и не могут изменять исходную строку.

Вам нужно написать html = html.replace(":", ".");


Немного связаны...

Я не мог заставить эти ответы работать, чтобы заменить все ":" в строке для кодированного URL символа% 3a и изменить этот ответ by'xdazz для работы: Javascript: Замените символы двоеточия и запятой, чтобы получить...

str = str.replace(/:\s*/g, "%3a");

В вашем случае это будет

str = str.replace(/:\s*/g, ".");

Если вы хотите заменить все двоеточие на более длинные строки.

Надеюсь, это поможет кому-то еще.


Я думаю, что С++ - это единственный язык высокого уровня, где строки изменяемы. Это означает, что replace не может изменить строку, на которой он работает, и поэтому должен возвращать новую строку.

Попробуйте вместо этого

var element = jQuery('.checkout td h4');
element.html(element.html().replace(":", "."));

Или, возможно, более правильно (поскольку у вас может быть несколько элементов).

jQuery('.checkout td h4').html(
 function (index, oldHtml) {
 return oldHtml.replace(":", ".");
 }
 );


Это также можно сделать, используя substring():

var str = "Your order will be processed soon:";
var str = str.substring(0,(str.length - 1)) + '.';
alert(str);

JS Fiddle demo.

Хотя это для дополнительной информации (следовательно, CW), а не для серьезного предположения, что вы должны сделать это таким образом, поскольку двоеточие (:) всегда должно быть последним символом, и если бы оно не было, тогда другие слова будут сокращены.

Ссылка:

licensed under cc by-sa 3.0 with attribution.