2017-08-06 80 views
1

替换字符这应该是简单的,但我不知道为什么它不工作:JavaScript和循环

function kebabToSnake (str){ 
    var string = ""; 
    var chart = ""; 
    for(i=0; i < str.lenght; i++){ 
     if (str.charAt(i) == "-") { 
      chart = "_"; 
      string = string + chart; 
     } 
     else { 
      chart = str.charAt(i); 
      string = string + chart; 
     } 
    } 
    return string 
} 

我知道我可以用str.replace(/做到这一点 - /克,“_” ),但我不能看到以上的问题,除了时间太长。任何帮助都会很棒。

+0

例如输入和输出? – Microsmsm

+3

@basement得到了答案。 str.length not leght –

+0

调试代码时会发生什么(例如,在调试器中逐行执行)?你看到了什么? – 2017-08-06 02:48:29

回答

3

你拼写的“长度”错误。(在线4)

它在拼写校正之后起作用。

function kebabToSnake (str){ 
 
    var string = ""; 
 
    var chart = ""; 
 
    for(i=0; i < str.length; i++){ //fixed spelling from 'str.lenght' 
 
     if (str.charAt(i) == "-") { 
 
      chart = "_"; 
 
      string = string + chart; 
 
     } 
 
     else { 
 
      chart = str.charAt(i); 
 
      string = string + chart; 
 
     } 
 
    } 
 
    return string 
 
} 
 

 
var body = document.querySelector('body'), 
 
    output = kebabToSnake('-'); //First test with '-' in conditional statement 
 

 
body.innerHTML = output; //display to body 
 

 
output = kebabToSnake('Another String'); //Second test with random text triggering ELSE statement 
 

 
body.innerHTML += '<br>' + output; //display to body

+0

大声笑我不敢相信我没有注意到,这让我发疯。谢谢!!! –

+0

@LucasA请接受我的答案,如果它为你工作。 (复选标记)。 – basement

-1

可以实现通过使用正则表达式更简洁这一目标:

function kebabToSnake (str) { 
    return str.replace(/-/g, '_'); 
} 
+0

'coz' - '是RegExp中的特殊用途字符,因此当您将其用作普通字符进行匹配时应该将其转义。 – tibetty

+0

是的,也许你是对的。但在实践中,我总是要求我的程序员逃避它,因为这对正确性没有负面影响。 – tibetty