كيفية استبدال جميع النقاط في سلسلة باستخدام جافاسكريبت


أريد استبدال كل حدوث للنقطة (.) في سلسلة جافا سكريبت

على سبيل المثال، لدي:

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

أريد الحصول على: okay this is a string.

حتى الآن جربت:

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

ولكن هذا ينتهي باستبدال كل النص بمسافات.

الإجابة رقم 1

تحتاج إلى الهروب من . لأنه يحمل معنى «حرف عشوائي» في التعبيرات النمطية.

mystring = 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('.', ' '));

أسرع من استخدام التعبيرات النمطية...

تعديل:
ربما في وقت كتابة هذا الكود لم أكن أستخدم jsperf. ولكن في النهاية مثل هذا النقاش عديم الجدوى تمامًا، فرق الأداء لا يستحق التضحية بوضوح الكود في العالم الحقيقي، لذا فإن إجابتي لا تزال صالحة، حتى لو اختلف الأداء عن نهج التعابير النمطية.

تعديل 2:
لقد أنشأت مكتبة تتيح لك القيام بذلك باستخدام واجهة سلسة:

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

انظر https://github.com/FagnerMartinsBrack/str-replace.

الإجابة رقم 4

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

الإجابة رقم 5

لهذا السيناريو البسيط، أوصي أيضًا باستخدام الطرق المدمجة في جافاسكريبت.

يمكنك تجربة هذا:

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

تحيات