2016-03-25 7 views
1

私はこの質問を参照しましたが、コーディングには新しいので、これに他の答えを関連付けることはできません。
最初の文字自体を変更しない以外最初の文字を除く複数の文字を置き換える方法は?

は、文字列sを考えると、その最初の文字のすべてのオカレンスが が「*」に変更されている文字列
を返します。例: 'babble' yield 'ba ** le' 文字列の長さが1以上であると仮定します。 ヒント:s.replace(stra、strb)は、文字列sのバージョンを返します。 straのすべてのインスタンスがstrbに置き換えられました。

これは私が持っているものですが、これは最初の文字を除くすべての文字を置き換えるものではなく、次の文字を置き換えます。ただ最初のないすべての出現を置き換えるために

function fixStart(s) 
    { 
    var c = s.charAt(0); 
    return c + s.slice(1).replace(c, '*'); 
    } 

答えて

0

、あなたはRegExpを使用することができます。

function fixStart(s) { 
    var c = s.charAt(0); 
    return c + s.slice(1).replace(new RegExp(c, 'g'), '*'); 
} 

例えばcの値が「B」であれば、その後、new RegExp(c, 'g')/b/gと同等です。

これは、あなたの例では "babble"のような単純な文字列に対して機能します。文字列が正規表現で何かを意味する特別な記号、例えば '。'で始まる場合、@Oriolがコメントで指摘したように、それをエスケープする必要があります。それがthis other answerでどのように行われたかを見てください。

+0

ありがとう@Oriol、良い点は、私のポストに追加されました。 – janos

0
function fixStart(s) { 
    var c = s.charAt(0); 
    var outputStr = ''; 
    // literate through the entire string pushing letters into a new string unless it is the first letter 
    for (var i = 0; i < s.length; i++) { 
     // if the letter is the first letter AND we are not checking the first letter 
     if (s[i] === c && i !== 0) outputStr += '*' 
     else outputStr += s[i] 
    } 
    return outputStr; 
    } 

    console.log(fixStart('hellohahaha')) 
関連する問題