使用循环和函数javascript将文本更改为驼峰大小写
我试图用一个函数把文本改成驼峰大小写。文本中的连字符表示字母需要大写的位置。i、 e.使用循环和函数javascript将文本更改为驼峰大小写,javascript,string,for-loop,operators,Javascript,String,For Loop,Operators,我试图用一个函数把文本改成驼峰大小写。文本中的连字符表示字母需要大写的位置。i、 e.“这是驼峰案例”将变成这是驼峰案例。我已经更改了每个单词,希望使用+=将它们作为串联字符串返回。但是,当我尝试返回字符串时,+=无法识别,或者我收到一条错误消息,说明“fullWord未定义”。这很奇怪,因为当我在循环中向它发出警报时,会识别出var fullWord 错误从哪里来。我怎样才能纠正它 塔克斯 函数camelize(str){ var-wordArr=str.split('-'); 对于(变量i=
“这是驼峰案例”
将变成这是驼峰案例
。我已经更改了每个单词,希望使用+=
将它们作为串联字符串返回。但是,当我尝试返回字符串时,+=
无法识别,或者我收到一条错误消息,说明“fullWord未定义”。这很奇怪,因为当我在循环中向它发出警报时,会识别出var fullWord
错误从哪里来。我怎样才能纠正它
塔克斯
函数camelize(str){
var-wordArr=str.split('-');
对于(变量i=0;i
我第一眼看到的代码问题:
- 此代码
var newStr+=fullword代码>无效。声明变量时不能使用
+=
- 您必须使用
而不是fullWord
(注意fullWord
w
- 您需要在for循环之外声明(至少)
,否则每次迭代都会初始化它newStr
- 此代码
无效。声明变量时不能使用var newStr+=fullword;
+=
- 您必须使用
而不是fullWord
(注意fullWord
w
- 您需要在for循环之外声明(至少)
,否则每次迭代都会初始化它newStr
var newStr+=fullword;
在循环内重新声明,在循环外用初始值声明
替代方案
str = str.replace(/-(.)/g, function($1) { return $1.toUpperCase(); }).replace(/-/g, '');
var newStr+=fullword;
在循环中重新声明,请使用初始值在外部声明它
替代方案
str = str.replace(/-(.)/g, function($1) { return $1.toUpperCase(); }).replace(/-/g, '');
问题确实出在
+=
上
这是因为+=
的目的是将一个字符串或数字添加到另一个字符串或数字中,但在这种情况下,您将其用于一个尚未分配任何内容的变量:newStr
不能向其添加任何字符串,因为在您调用它时它不存在
您需要的是直接分配:
var newStr = fullword
问题确实出在
+=
上
这是因为+=
的目的是将一个字符串或数字添加到另一个字符串或数字中,但在这种情况下,您将其用于一个尚未分配任何内容的变量:newStr
不能向其添加任何字符串,因为在您调用它时它不存在
您需要的是直接分配:
var newStr = fullword
更简单的选择:
'this-has-been-camel-cased'.replace(/-./g, function (m) {
return m[1].toUpperCase();
});
以下是一个函数:
function camelize(input, splitter) {
if (!splitter) splitter = '-';
return input.replace(new RegExp(splitter + '.', 'g'), function (m) {
return m[1].toUpperCase();
});
}
以及“无正则表达式”版本:
function camelize(input, splitter) {
var i = 0;
if (!splitter) splitter = '-';
input = input.split(splitter);
while (++i < input.length) {
input[i] = input[i].charAt(0).toUpperCase() + input[i].slice(1);
}
return input.join('');
}
更简单的选择:
'this-has-been-camel-cased'.replace(/-./g, function (m) {
return m[1].toUpperCase();
});
以下是一个函数:
function camelize(input, splitter) {
if (!splitter) splitter = '-';
return input.replace(new RegExp(splitter + '.', 'g'), function (m) {
return m[1].toUpperCase();
});
}
以及“无正则表达式”版本:
function camelize(input, splitter) {
var i = 0;
if (!splitter) splitter = '-';
input = input.split(splitter);
while (++i < input.length) {
input[i] = input[i].charAt(0).toUpperCase() + input[i].slice(1);
}
return input.join('');
}
fullWord vs.fullWord.Capital W vs.lower case.fullWord vs.fullWord.Capital W vs.lower case.我已经尝试在
for循环
的内部和外部声明如上所示的变量。两种方式都只返回字符串的最后一个字,即“Cased”。我还尝试在声明下面添加newStr+=fullWord
,但没有效果。我还简单地声明了var newStr;
,然后将newStr+=fullWord
放在下面。它们都只返回字符串的最后一个单词。知道如何让它显示所有单词吗?我尝试了如上所示声明变量h循环的内部和外部
。两种方式都只返回字符串的最后一个字,即“Cased”。我还尝试在声明下面添加newStr+=fullWord
,但没有效果。我还尝试了简单地声明var newStr;
,然后将newStr+=fullWord
放在下面。它们都只返回字符串的最后一个单词。你知道如何让它显示所有单词吗?