我试图将特定indexOf处的字符替换为大写。
我的字符串是姓氏加上姓氏的第一个字母,
看起来像这样:"lovisa t"
。
我用这个检查位置,它给了我在字符串中的正确位置。所以第二个给了我8个(在这种情况下)。
first = texten.indexOf(" ");
second = texten.indexOf(" ", first + 1);
然后我将第一个字母替换为大写字母。
var name = texten.substring(0, second);
name=name.replace(/^./, name[0].toUpperCase());
但是如何将“second”中的字符替换为大写?
我用
进行了测试name=name.replace(/.$/, name[second].toUpperCase());
但它没有用,所以任何输入都非常感谢,谢谢。
答案 0 :(得分:0)
这是一个完全符合您的问题标题要求的版本:它在字符串中大写特定索引。
function upperCaseAt(str, i) {
return str.substr(0, i) + str.charAt(i).toUpperCase() + str.substr(i + 1);
}
var str = 'lovisa t';
var i = str.indexOf(' ');
console.log(upperCaseAt(str, i + 1));
但是,如果要在字符串中查找特定模式,则无需处理索引。
var str = 'lovisa t';
console.log(str.replace(/.$/, function (m0) { return m0.toUpperCase(); }));
此版本使用正则表达式查找字符串中的最后一个字符,并使用替换函数来匹配匹配。
var str = 'lovisa t';
console.log(str.replace(/ [a-z]/, function (m0) { return m0.toUpperCase(); }));
此版本类似,但它不是寻找最后一个字符,而是查找空格后跟小写字母。
var str = 'lovisa t';
console.log(str.replace(/(?:^|\s)\S/g, function (m0) { return m0.toUpperCase(); }));
最后,我们在这里寻找(和大写)所有以空格字符开头或空格字符开头的非空格字符;即我们将每个(以空格分隔的)单词的开头大写。
答案 1 :(得分:0)
您的错误是第二个字母不在8
位置,而是7
。
此second = texten.indexOf(" ", first + 1);
也提供-1
,而非8
,因为您的字符串中没有两个空格。
如果您知道该字符串始终采用 surname space oneLetter 格式,并且您希望将第一个字母和最后一个字母大写,则可以执行此操作:
var name = 'something s';
name = name[0].toUpperCase() + name.substring(1, name.length - 1) + name[name.length -1].toUpperCase();
console.log(name)

答案 2 :(得分:0)
所有这些都可以通过正则表达式替换来完成。
"lovisa t".replace(/(^|\s)\w/g, s=>s.toUpperCase());
答案 3 :(得分:-1)
尝试这个(如果它会有帮助,更好地将常量移动到其他地方,因为性能问题(是的,正则表达式创建并不快)):
function normalize(str){
var LOW_DASH = /\_/g;
var NORMAL_TEXT_REGEXP = /([a-z])([A-Z])/g;
if(!str)str = '';
if(str.indexOf('_') > -1) {
str = str.replace(LOW_DASH, ' ');
}
if(str.match(NORMAL_TEXT_REGEXP)) {
str = str.replace(NORMAL_TEXT_REGEXP, '$1 $2');
}
if(str.indexOf(' ') > -1) {
var p = str.split(' ');
var out = '';
for (var i = 0; i < p.length; i++) {
if (!p[i])continue;
out += p[i].charAt(0).toUpperCase() + p[i].substring(1) + (i !== p.length - 1 ? ' ' : '');
}
return out;
} else {
return str.charAt(0).toUpperCase() + str.substring(1);
}
}
console.log(normalize('firstLast'));//First Last
console.log(normalize('first last'));//First Last
console.log(normalize('first_last'));//First Last