Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改字符串中的单个字符在循环中不起作用_Javascript_Loops - Fatal编程技术网

Javascript 更改字符串中的单个字符在循环中不起作用

Javascript 更改字符串中的单个字符在循环中不起作用,javascript,loops,Javascript,Loops,所以,我正在做一些练习题。我的代码似乎工作得很好,直到我决定循环字符串以将句点的任何实例替换为空为止。由于某种原因,循环不起作用。我想这与不调用它有关,但我不确定如何调用循环。我认为循环会自动重写它们正在循环的内容。以下是练习和我不完整的解决方案: 编写JavaScript函数来参数化字符串 函数字符串\u参数化(字符串){ var lowercase_string=string.toLowerCase(); var split_string=小写的_string.split(“”); var

所以,我正在做一些练习题。我的代码似乎工作得很好,直到我决定循环字符串以将句点的任何实例替换为空为止。由于某种原因,循环不起作用。我想这与不调用它有关,但我不确定如何调用循环。我认为循环会自动重写它们正在循环的内容。以下是练习和我不完整的解决方案:

编写JavaScript函数来参数化字符串

函数字符串\u参数化(字符串){
var lowercase_string=string.toLowerCase();
var split_string=小写的_string.split(“”);
var joined_string=split_string.join(“-”);
对于(i=0;ilog(字符串参数化(“来自美国的罗宾·辛格”)您正在检查连接字符串[i]的值,而不是分配它

joined_string[i] = "";
不是


其他答案没有考虑到JavaScript中的字符串是不可变的。不能更改字符串中的单个字符。您构建了一个新字符串

在JavaScript中,字符串是不可变的。尝试更改字符串中的字符无效:
函数字符串\u参数化(字符串){
var lowercase_string=string.toLowerCase();
var split_string=小写的_string.split(“”);
var joined_string=split_string.join(“-”);
对于(i=0;i
您的代码不起作用,因为在if条件下,您正在检查
连接的字符串[i]==“
是否等于
”。
,实际上它等于
“USA.”
。这就是为什么如果
条件从未满足,则返回”。在最终结果中:

if (joined_string[i]===".") {
    joined_string[i]==="";
}

您可以在输出中输入您不想要的每个字符

var res = string.toLowerCase().replace(/[%\(\)\.\s]+/g, "-").replace(/-$/, "");
                                      // ^ ^ ^   ^
                                      // Here the characters you don't want to have in the output
+
表示匹配一次更多次。将匹配的字符替换为
-

然后用
-$
删除最后一个
-

总计

函数字符串\u参数化(字符串){
var res=string.toLowerCase().replace(/[%\(\)\.\s]+/g,“-”).replace(/-$/,”);
返回res;
}
console.log(字符串_参数化(“чччС”);//俄语句子
log(字符串_参数化(“Robin Singh%%(),来自美国”);
log(字符串_参数化(“Robin…Singh from USA…..”);
log(字符串参数化(“来自美国的罗宾·辛格”);

log(字符串参数化(“来自美国的罗宾·辛格”)等号太多-连接的\u字符串[i]=“应该连接\u字符串[i]=“您的if中没有赋值。是否尝试连接\u字符串。替换(/\./g)”;--这样,您就不必遍历整个字符串并将所有句点(.)替换为“”。将“==”更改为“=”不起作用。什么任务会进入if?我还想不用正则表达式来做,因为我还没有学会。我正试图让循环工作,但它就是不起作用。接近选民:问题不仅仅是印刷错误。是的,代码中有一个输入错误,
joined\u string[i]==”本应是
连接的_字符串[i]=“”。然而,即使该错误得到纠正,代码仍然无法正常工作。因此,“题外话:印刷错误”不是一个有效/准确的结束理由。它对我仍然不起作用。它对我仍然不起作用。哇,谢谢!我还没有学会正则表达式,但我会研究一下。至于这部分。。。如果(joined_string[i]!==“){newString+=joined_string[i];}…你能解释一下这到底是什么意思吗?我把它理解为“如果连接字符串的索引不是句点,那么继续循环到新闻字符串中?”我很高兴能够提供帮助。我不确定你在评论中包含的代码是什么意思。至于正则表达式:它们是一个强大的工具;在很多情况下都很有用。有些情况下它们是最好的工具,有些情况下它们是不合适的。它们背后的概念在许多计算机语言中都很有用,但每种实现(语言)都可能有细微的不同。有一件事可能有助于学习它们,那就是使用正则表达式测试仪,但要确保它明确声明它使用JavaScript正则表达式?我试图在谷歌和YouTube上搜索+=的含义,但什么也找不到。@Andrew<代码>新闻字符串+=已加入的_字符串[i]
相当于
newString=newString+joined_string[i]。在这种情况下,它将
joined_string[i]
的值连接到
newString
的末尾,并将整个值分配给
newString
。我不知道为什么一开始我不理解你的问题。这其实是清楚和合理的。不知怎的,我看错了。(续)@Andrew,(续)代码:
if(joined_string[i]!=”){newString+=joined_string[i];}
说/做:如果当前字符不是
,那么将当前字符添加到
新闻字符串的末尾。如果当前字符是要从字符串中删除的字符,则不会将当前字符添加到
newString
。因为我们将它替换为零,
'
,所以在
if
中没有
else{…}
子句。如果我们做的不是d
function string_parameterize(str){
    return str.toLowerCase().replace(".", "").split(" ").join("-");
}
console.log(string_parameterize("Robin Singh from USA."));
//will result in: robin-singh-from-usa
if (joined_string[i]===".") {
    joined_string[i]==="";
}
function string_parameterize(string) {
    var lowercase_string = string.toLowerCase();
    var split_string = lowercase_string.split(" ");
    var joined_string = split_string.join("-");
    joined_string = joined_string.replace(".", "");
    return joined_string;
}

//Test Data :
console.log(string_parameterize("Robin Singh from USA."));

This is working in IE.
var res = string.toLowerCase().replace(/[%\(\)\.\s]+/g, "-").replace(/-$/, "");
                                      // ^ ^ ^   ^
                                      // Here the characters you don't want to have in the output