Как заменить все точки в строке с помощью JavaScript

Я хочу заменить все вхождения точки (.) в строке JavaScript

Например, у меня есть:

var mystring = 'okay.this.is.a.string';

Я хочу получить: okay this is a string.

До сих пор я пытался:

mystring.replace(/./g,' ')

но это заканчивается заменой всей строки на пробелы.

Ответ 1

Вам нужно избежать ., потому что оно имеет значение "произвольный символ" в регулярном выражении.

mystring.replace(/\./g,' ')

Ответ 2

Еще одно решение, которое легко понять:)

var newstring = mystring.split('.').join(' ');

Ответ 3

/**
 * ReplaceAll by Fagner Brack (MIT Licensed)
 * Replaces all occurrences of a substring in a string
 */
String.prototype.replaceAll = function( token, newToken, ignoreCase ) {
    var _token;
    var str = this + "";
    var i = -1;

    if ( typeof token === "string" ) {

        if ( ignoreCase ) {

            _token = token.toLowerCase();

            while( (
                i = str.toLowerCase().indexOf(
                    _token, i >= 0 ? i + newToken.length : 0
                ) ) !== -1
            ) {
                str = str.substring( 0, i ) +
                    newToken +
                    str.substring( i + token.length );
            }

        } else {
            return this.split( token ).join( newToken );
        }

    }
return str;
};

alert('okay.this.is.a.string'.replaceAll('.', ' '));

Быстрее, чем использовать регулярное выражение...

EDIT:
Возможно, в то время, когда я сделал этот код, я не использовал jsperf. Но в итоге такое обсуждение совершенно бессмысленно, разница в производительности не стоит четкости кода в реальном мире, поэтому мой ответ по-прежнему действителен, даже если производительность отличается от подхода с регулярным выражением.

EDIT2:
Я создал lib, который позволяет вам делать это, используя свободный интерфейс:

replace('.').from('okay.this.is.a.string').with(' ');

См. https://github.com/FagnerMartinsBrack/str-replace.

Ответ 4

str.replace(new RegExp(".","gm")," ")

Ответ 5

Для этого простого сценария я также рекомендую использовать методы, которые встраиваются в javascript.

Вы можете попробовать следующее:

"okay.this.is.a.string".split(".").join("")

Привет

Ответ 6

Я добавляю двойную обратную косую черту к точке, чтобы она работала. Не унывайте.

var st = "okay.this.is.a.string";
var Re = new RegExp("\\.","g");
st = st.replace(Re," ");
alert(st);

Ответ 7

Это более краткий/читаемый и должен работать лучше, чем тот, который был отправлен Fagner Brack (toLowerCase не выполняется в цикле):

String.prototype.replaceAll = function(search, replace, ignoreCase) {
  if (ignoreCase) {
    var result = [];
    var _string = this.toLowerCase();
    var _search = search.toLowerCase();
    var start = 0, match, length = _search.length;
    while ((match = _string.indexOf(_search, start)) >= 0) {
      result.push(this.slice(start, match));
      start = match + length;
    }
    result.push(this.slice(start));
  } else {
    result = this.split(search);
  }
  return result.join(replace);
}

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

alert('Bananas And Bran'.replaceAll('An', '(an)'));

Ответ 8

String.prototype.replaceAll = function(character,replaceChar){
    var word = this.valueOf();

    while(word.indexOf(character) != -1)
        word = word.replace(character,replaceChar);

    return word;
}

Ответ 9

Здесь другая реализация replaceAll. Надеюсь, это поможет кому-то.

    String.prototype.replaceAll = function (stringToFind, stringToReplace) {
        if (stringToFind === stringToReplace) return this;
        var temp = this;
        var index = temp.indexOf(stringToFind);
        while (index != -1) {
            temp = temp.replace(stringToFind, stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
    };

Затем вы можете использовать его:

var myText = "My Name is George",
var newText = myText.replaceAll( "Джордж", "Майкл" );

Ответ 10

Пример: я хочу заменить все double Quote (") на одну цитату ('). Тогда код будет таким:

var str= "\"Hello\""
var regex = new RegExp('"', 'g');
str = str.replace(regex, '\'');
console.log(str); // 'Hello'

Ответ 11

@scripto сделал несколько более кратким и без prototype:

function strReplaceAll(s, stringToFind, stringToReplace) {
    if (stringToFind === stringToReplace) return s;
    for (let index = s.indexOf(stringToFind); index != -1; index = s.indexOf(stringToFind))
        s = s.replace(stringToFind, stringToReplace);
    return s;
}

Вот как он складывается: http://jsperf.com/replace-vs-split-join-vs-replaceall/68

Ответ 12

String.prototype.replaceAll = function (needle, replacement) {
    return this.replace(new RegExp(needle, 'g'), replacement);
};

Ответ 13

вы можете заменить все вхождения любой строки/символа с помощью объекта JavaScript REGExp.

Вот код,

var mystring = 'okay.this.is.a.string';

var patt = new RegExp("\\.");

while(patt.test(mystring)){

  mystring  = mystring .replace(".","");

}

Ответ 14

var mystring = 'okay.this.is.a.string';
var myNewString = escapeHtml(mystring);

function escapeHtml(text) {
if('' !== text) {
    return text.replace(/&/g, "&")
               .replace(/&lt;/g, "<")
               .replace(/&gt;/g, ">")
               .replace(/\./g,' ')
               .replace(/&quot;/g, '"')
               .replace(/&#39/g, "'");
}