如何使用 .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>
谢谢!
您的代码中存在这些问题:
- 您的
sendArray()
方法需要 return 其结果。
- 您需要使用
String.prototype.sendArray = function() {...}
,而不是 str.prototype.sendArray = ...
。
- 当您在原型上创建新方法时,您将当前实例引用为
this
,而不是 str
。
- 您必须使用
arr[i]
引用数组项。
- 你在
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.
几个问题:
- 需要使用
String.prototype.sendArray =
- 需要
return
一个值
i > arr.length
永远不会是真的
- 需要使用
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>
我正在编写一个代码,该代码应该将字母表拆分为不同行上的每个字母。当我按下提交按钮时,它没有显示字母,而是什么都不做。我不确定为什么它不起作用。
输出应该是:
答:
乙:
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>
谢谢!
您的代码中存在这些问题:
- 您的
sendArray()
方法需要 return 其结果。 - 您需要使用
String.prototype.sendArray = function() {...}
,而不是str.prototype.sendArray = ...
。 - 当您在原型上创建新方法时,您将当前实例引用为
this
,而不是str
。 - 您必须使用
arr[i]
引用数组项。 - 你在
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.
几个问题:
- 需要使用
String.prototype.sendArray =
- 需要
return
一个值 i > arr.length
永远不会是真的- 需要使用
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>