Ответ 1
'John Cooper'.split(' ').map(function (s) { return s.charAt(0); }).join('');
'John Cooper'.replace(/[^A-Z]/g, '');
У меня есть требование, когда мне нужно взять первую букву из двух слов. Как я получаю ответ от WebService как John Cooper
, и я должен принять JC
от этого.
Я попробовал sbstr(0,2)
, но это требует JO, есть ли способ, который мы можем сформировать, как указано выше.
'John Cooper'.split(' ').map(function (s) { return s.charAt(0); }).join('');
'John Cooper'.replace(/[^A-Z]/g, '');
Чтобы обобщить ответ регулярного выражения, заданный @katspaugh, это будет работать для всех строк с любым количеством слов, независимо от того, капитализирована ли первая буква.
'John Cooper workz'.replace(/\W*(\w)\w*/g, '$1').toUpperCase()
приведет к JCW
очевидно, если вы хотите сохранить случай первой буквы каждого слова, просто удалите toUpperCase()
ОБРАТНАЯ СВЯЗЬ
при таком подходе такие вещи, как John McCooper
, приведут к JM
not JMC
Вы можете найти некоторые полезные функции javascript из коробки в Интернете:
function getInitials(x)
{
//(x is the name, e.g. John Cooper)
//create a new variable 'seperateWords'
//which uses the split function (by removing spaces)
//to create an array of the words
var seperateWords = x.split(" ");
//also create a new empty variable called acronym
//which will eventually store our acronym
var acronym = "";
//then run a for loop which runs once for every
//element in the array 'seperateWords'.
//The number of elements in this array are ascertained
//using the 'seperateWords.length' variable
for (var i = 0; i < seperateWords.length; i++){
//Eacy letter is added to the acronym
//by using the substr command to grab
//the first letter of each word
acronym = (acronym + seperateWords[i].substr(0,1));
}
//At the end, set the value of the field
//to the (uppercase) acronym variable
// you can store them in any var or any HTML element
document.register.username2.value = toUpperCase(acronym);
}
Трюк, который вы пропустили из вашей попытки, - это сначала split
имя для разделения имени и фамилии.
[Источник]
Хорошо, если я хочу, чтобы вы писали так просто попробуйте следующее
var words = 'John Cooper'.split(' ');
var shortcut = words[0][0] + words[1][0];
alert(shortcut);
//thats, если вы уверены, что это имя в 2 слова
С уважением:)
var name = "John Cooper";
var initials = "";
var wordArray = name.split(" ");
for(var i=0;i<wordArray.length;i++)
{
initials += wordArray[i].substring(0,1);
}
document.write(initials);
В основном вы разбиваете строку на пробел и берете первый символ каждого слова.
Здесь решение регулярного выражения, которое поддерживает акцентированные буквы, такие как à и нелатинские языки, такие как иврит, и не предполагает названия Camel-Case:
var name = 'ḟoo Ḃar';
var initials = name.replace(/\s*(\S)\S*/g, '$1').toUpperCase();
document.getElementById('output').innerHTML = initials;
<div id="output"></div>