0

" "単語間のスペースを文字列(スペース)に変更する関数に取り組んでいます。

たとえば"Hello World. Hi there.""Hello(space)world.(space)Hi(space)there."

編集:私はこれを次のような構造化された英語の特定のセットに構築しようとしています:

  • 結果の初期値を空の文字列に設定します
  • 引数文字列の各インデックスに対して
  • そのインデックスの文字がスペースの場合
  • 結果に「(スペース)」を追加
  • そうしないと
  • そのインデックスの文字を結果に追加します
  • 終了する場合
  • 終了
  • 結果を返す

これが私がこれまでに思いついたものです。

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を始めたばかりです。どんな助けでも大歓迎です。

-ロス。

4

2 に答える 2

3

String.replaceを使用する

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

編集:コードを機能させるには:

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

}
于 2011-09-13T19:33:01.127 に答える
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)");
}
于 2011-09-13T19:41:15.983 に答える