2011-09-13 85 views
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開始。任何幫助,將不勝感激。

-Ross。

+0

沒有必要t o在標題中加入焦點話題。 StackOverflow將在頁面的標題前加上最受歡迎的標籤(在本例中爲JavaScript)。 – 2011-09-13 19:37:35

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2011-09-13 19:38:01

回答

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 

} 
+0

感謝這個偉大的解決方案。我唯一的問題是,我試圖按照一套特定的結構化英語來構建它。 結果的初始值設置爲空字符串 在參數字符串 每個索引如果該索引的字符是空格然後 追加「(空格)」,導致 別的 該索引來在追加字符結果 結束如果 結束爲 返回結果 –

+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

您提出的一個觀點:「沒有事情沒有發生」。我應該更仔細地看待事情。非常感謝您的導師解釋我的「回報」。在循環中也是如此。這是非常寶貴的。 –