如何使用 .split() 将字符串分解成更小的字符串?

How do I use .split() to break up a string into much smaller strings?

我正在编写一个代码,该代码应该将字母表拆分为不同行上的每个字母。当我按下提交按钮时,它没有显示字母,而是什么都不做。我不确定为什么它不起作用。

输出应该是:
答:
乙:
C:
D:
等...

感谢任何帮助,但请不要使用 JQuery。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:hi="http://www.w3.org/1999/xhtml">
<head>
    <title>My String Prototype</title>
</head>
<body>
<form action = "#">
    <input type="submit" id = "sub" value="Submit" onclick = "show_alphabet();"/>
</form>
<script type="text/javascript">
    function show_alphabet () {
        var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        str.prototype.sendArray= function (){
            str.split("");
        };
        var arr = str.sendArray();
        for (var i=0;i>arr.length;i++){
            document.writeln(arr+":");
        }
    }
</script>
</body>
</html>

谢谢!

您的代码中存在这些问题:

  1. 您的 sendArray() 方法需要 return 其结果。
  2. 您需要使用 String.prototype.sendArray = function() {...},而不是 str.prototype.sendArray = ...
  3. 当您在原型上创建新方法时,您将当前实例引用为 this,而不是 str
  4. 您必须使用 arr[i] 引用数组项。
  5. 你在 for 语句中的比较操作是倒退的。

我不明白你为什么要创建一个只做 .split() 的新方法,但如果你想这样做,那么你需要 return 新值和使用 this 而不是 str 并使用 String.prototype:

    String.prototype.sendArray= function (){
        return this.split("");
    };

但是,您实际上根本不需要这种新方法。这是包含上述项目的工作片段 fixed/changed:

    function show_alphabet () {
        var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var arr = str.split("");
        for (var i=0;i < arr.length;i++){
            document.write(arr[i] + "<br>");
            console.log(arr[i]);
        }
    }

    show_alphabet();

或者,使用您的 sendArray() 方法:

    String.prototype.sendArray= function (){
        return this.split("");
    };

    function show_alphabet () {
        var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var arr = str.sendArray();
        for (var i=0;i < arr.length;i++){
            document.write(arr[i] + "<br>");
            console.log(arr[i]);
        }
    }

    show_alphabet();


原型使用说明

这里是关于.prototype问题的一些解释。 .prototype 属性 是一个构造函数的直接 属性 ,而不是一个单独的对象。这意味着它是 String 的 属性,而不是 str。一旦你在 String 上更改它,那么从该构造函数创建的所有对象将自动继承该更改。因此,当您向 String.prototype 添加内容时,它会自动作为直接方法在 str 上可用。

然后,当调用该方法时,this 的值将指向当前对象,因此要从原型方法引用当前对象的方法或 属性,您可以使用 this 作为基础。所以,在这种情况下,你会调用 this.split("") so split the current string.

几个问题:

  1. 需要使用String.prototype.sendArray =
  2. 需要return一个值
  3. i > arr.length永远不会是真的
  4. 需要使用arr[i]访问当前元素。 arr 是整个数组

这似乎按预期工作:

function show_alphabet () {
    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    String.prototype.sendArray = function (){
        return str.split("");
    };
    var arr = str.sendArray();
    for (var i = 0; i < arr.length; i++){
        document.write(arr[i] + ":");
    }
}

由于这看起来像是家庭作业,您不会直接得到答案。

1) 拆分字符串时,您可以选择要拆分的字符。 例如:拆分 ("A B")(A 然后 space 然后 B)。 Returns 一个包含 2 个元素的数组。 A & B.

2) 您不需要在线帮助中看到的所有字符串原型内容。 var arr = str.split(... 工作正常。

3) for 循环中你的大于号应该小于号。当 i 小于而不是大于长度时,你要重复。

4) 你不想写 arr。你想写 arr[i],或者数组的第 i 个元素。

5) 要在 HTML 中换行,请将“:”替换为“<br />

如果您已经可以默认将字符串 split 转换为字符,则无需这样做:

var string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

for(var i = 0; i < string.length; i++){
  document.getElementById('results').innerHTML += '\n' + string[i];
  }
<pre id="results"></pre>