[javascript] JavaScript를 사용하여 문자열의 모든 점을 바꾸는 방법

.JavaScript 문자열에서 모든 dot ( ) 을 바꾸고 싶습니다.

예를 들어, 나는 :

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

나는 얻고 싶다 : okay this is a string.

지금까지 나는 시도했다 :

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

그러나 이것은 모든 문자열을 공백으로 바꿉니다.



답변

.정규 표현식에서 “임의의 문자”라는 의미를 갖기 때문에 이스케이프해야합니다 .

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


답변

이해하기 쉬운 하나 이상의 솔루션 🙂

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


답변

/**
 * 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('.', ' '));

정규식을 사용하는 것보다 빠릅니다 …

편집 :
어쩌면이 코드를 수행 할 때 jsperf를 사용하지 않았습니다. 그러나 결국 그러한 논의는 전혀 의미가 없으며 성능 차이는 실제 코드의 가독성에 가치가 없으므로 성능이 정규식 접근 방식과 다르더라도 여전히 내 대답은 유효합니다.

EDIT2 :
유창한 인터페이스를 사용 하여이 작업을 수행 할 수있는 lib를 만들었습니다.

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

https://github.com/FagnerMartinsBrack/str-replace를 참조 하십시오 .


답변

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


답변

이 간단한 시나리오의 경우 Javascript에 내장 된 메소드를 사용하는 것이 좋습니다.

당신은 이것을 시도 할 수 있습니다 :

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

인사말


답변

점에 이중 백 슬래시를 추가하여 작동시킵니다. 격려.

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


답변

이것은 더 간결하고 읽기 쉬우 며 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)'));