JavaScript数组和拆分问题
请看下面的代码JavaScript数组和拆分问题,javascript,arrays,html,split,Javascript,Arrays,Html,Split,请看下面的代码 <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head>
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
function ttsSpeak(text)
{
var textArray = text.split(" ");
var finalString="";
for(var i=0;i<textArray.length;i++)
{
finalString = finalString+textArray[i]+"+";
}
alert(finalString);
}
</script>
</head>
<body>
<div><p id="text">In meteorology surface.
</p></div>
<div><button id="speak" onclick="ttsSpeak(document.getElementById('text').innerHTML);">Speak</button></div>
</body>
</html>
但是,我得到了下面的答案
我在这里做错了什么?innerHTML在结尾包含所有空格(即
“
)-这被拆分为空字符串(“”),然后在结尾连接
在空白处拆分的一般方法是使用/\s+/
(在尽可能多的空白处拆分),之前可能会进行修剪
“foo”.split(“”/->[“foo”、“”、“”、“”、“”、“”、“”、“”]
“foo”.split(/\s+/)/->[“foo”,“”]
“foo”.trim().split(/\s+/)/->[“foo”]
使用/\s+/
也会隐式地“修复”换行问题
(另请参见Amadan指出的内容。)为了帮助您将原因可视化,如果您将HTML中的所有空格替换为下划线,则文本段落如下所示:
<p id="text">In_meteorology_surface.
____________</p>
在地面气象中。
____________
文本后面有一个换行符,第二行后面有一堆空格
您可以在拆分文本之前修剪文本,也可以在可能的多个空格上拆分文本
另外,您可能不想在语句中使用innerHTML
,而是textContent
您在textary
中的每个项目后都添加了加号,即使在最后一次迭代中也是如此。你可以用它来代替
加价
如上所述,还有额外的空白。 将来,为了避免在使用split时出现不明显的空白,可以在split之前使用trim()函数 就你而言:
text = text.trim();
var textArray = text.split(" ");
您的textArray包含值为“”的元素,一个空格,原因是(介于
和
之间):
关于javascript中数组过滤器的进一步阅读是在for循环中,您可以编写这个finalString=finalString+textary[i]+“+”;它将给出您的预期输出。谢谢您的回复+从我这里得到1分!谢谢你的回复+从我这里得到1分!谢谢你的回复+从我这里得到1分!
finalString = finalString+textArray[i]+"+";
<p id="text">In meteorology surface.
</p>
alert(text.trim().split(" ").join("+")+"+");
text = text.trim();
var textArray = text.split(" ");
<p id="text">In meteorology surface.
</p>
function isSpace(element){
if(element != " " || element != "") return element;
}
textArrayWithoutEmptyObjects = textArray.filter(isSpace));