2011-09-13 12 views
0

私は単語間のスペースを文字列" "(スペース)に変更する機能を開発しています。文字列操作 ""を(スペース)で置き換えます

例えば、"Hello World. Hi there.""Hello(space)world.(space)Hi(space)there."

EDITなる:

  • がに、結果の初期値を設定します。私は次のように構造化された英語の特定のセットにこれを構築しようとしています引数文字列
  • 内の各インデックスに空の文字列
  • そのインデックスの文字が、その後
  • アペンドスペースである場合'(空白)' ここで
  • リターン結果について
  • END IF
  • 終わりをもたらすためにそのインデックスで文字を追加
  • を発生する

は私がすることができたものですこれまでに来て:

function showSpaces(aString) 
{ 
var word, letter; 

word = aString 
for var (count = 0; count < word.length; count = count + 1) 

{ 
    letter = word.charAt(count); 
    if (letter == " ") 
    { 
     return("(space)"); 
    } 
    else 
    { 
     return(letter); 
    } 
} 
} 

私はこの関数呼び出しをテストするたびに、何も次のようになります。

<INPUT TYPE = "button" NAME = "showSpacesButton" VALUE ="Show spaces in a string as (space)" 
     ONCLICK = "window.alert(showSpaces('Space: the final frontier'));"> 

JavaScriptは現時点ではまだ始まっていません。どんな助けもありがとう。

-Ross

+0

必要ありませんoタイトルに焦点トピックを含める。 StackOverflowは、ページのタイトルに最も人気のあるタグ(この場合はJavaScript)を付加します。 –

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

答えて

3

使用String.replace

function showSpaces(aString) 
{ 
    return aString.replace(/ /g,'(space)'); 
} 

EDIT:あなたのコードの作業を取得する:

function showSpaces (aString) 
{ 

    var word, letter, 
     output = ""; // Add an output string 

    word = aString; 
    for (var count = 0; count < word.length; count = count + 1) // removed var after for 

    { 
     letter = word.charAt(count); 
     if (letter == " ") 
     { 
      output += ("(space)"); // don't return, but build the string 
     } 
     else 
     { 
      output += (letter); // don't return, but build the string 
     } 
    } 
    return output; // once the string has been build, return it 

} 
+0

この素晴らしいソリューションをありがとう。私の唯一の問題は、構造化された英語の特定のセットに従ってそれを構築しようとしていることです。そのインデックスにある文字は、その後、他の にそのインデックスで文字を追加をもたらすのに APPEND「(スペース)」スペースであれば は、引数文字列 内の各インデックスに空の文字列 に結果の初期値を設定します結果 終了場合 終了 返品結果 –

+0

@Ross、あなたのアルゴリズムのコメントで更新しました。これが役に立ったら教えてください。 – Joe

+0

ありがとうございました。これらのコメントは本当に役に立ちます! –

1

いいえ、 "何も" 起こらないことはありません。それは非常にまれです。 for (varの代わりにfor var (を使用したため、コードに構文エラーが発生していることがあります。

これを修正すると、ループ内でreturnを使用するため、文字列を組み立ててループの後に戻す代わりに、文字列の最初の文字のみを取得できることがわかります。

あなたはこのように行うことができ

function showSpaces(word) { 
    var letter, result = ""; 
    for (var count = 0; count < word.length; count++) { 
    letter = word.charAt(count); 
    if (letter == " ") { 
     result += "(space)"; 
    } else { 
     result += letter; 
    } 
    } 
    return result; 
} 

デモ:http://jsfiddle.net/Guffa/pFkhs/

(注意:文字列を連結する+=を使用すると、長い文字列のためにひどく実行)

ます。また、正規表現を使用することができます文字列を置き換える:

function showSpaces(word) { 
    return word.replace(/ /g, "(space)"); 
} 
+0

あなたは「何も起こっていないこと」についてあなたが作る健全なポイントです。私は物事をより緊密に見なければならない。私の "帰ってきたこと"を説明してくれた教えてくれてありがとう。ループの内側にもあります。それは非常に貴重です。 –

関連する問題