0

我一直在研究将单词之间的空格更改为字符串" "(空格)的函数。

例如,"Hello World. Hi there."会变成"Hello(space)world.(space)Hi(space)there."

编辑:我正在尝试将其构建为一组特定的结构化英语,如下所示:

  • 将 result 的初始值设置为空字符串
  • 对于参数字符串中的每个索引
  • 如果该索引处的字符是空格,则
  • 将“(空格)”附加到结果
  • 别的
  • 将该索引处的字符附加到结果
  • 万一
  • 结束
  • 返回结果

到目前为止,这是我能想到的:

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 回答