我正在尝试制作一个获得一个人姓名的程序,并返回他的名字缩写,例如,如果他的名字是约翰迈克尔罗杰斯,我想得到结果JR(没有M)。我想出了一个只返回最后一个大写字母的解决方案。这是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Second task HS</title>
</head>
<body>
<form name="myForm" id="eForm">
<label for="first">Name</label>
<input type="text" id="name" name="fullname"><br>
<input name="button" type="button" value="Pick" onclick="pick();"/>
</form>
<div id="result">
</div>
<script>
var name = document.getElementById("name").value;
function pick() {
for(var i = 0; i < name.length; i++){
if(name[i] === name[i].toUpperCase() && name[i] !== name[i].toLowerCase()){
document.getElementById('result').innerHTML = name[i]
}
}
}
</script>
</body>
</html>
如何指定我希望脚本仅从字符串的第一个和最后一个空格分隔部分搜索字母。就像约翰迈克尔罗杰斯的例子一样,只搜索约翰和罗杰斯。
答案 0 :(得分:1)
这是一个带名字的函数,将其拆分并返回一个包含首字母和最终字母大写字母的对象,无论提交的名称是否大写。
var name = 'John Michael Rogers';
var name2 = 'john Michael Rogers moore';
function getInitials(name) {
var arr, nameArr, first, last;
nameArr = name.split(' ');
first = nameArr[0][0].toUpperCase();
last = nameArr[nameArr.length - 1][0].toUpperCase();
return {first: first, last: last};
}
getInitials(name); // { first: 'J', last: 'R' }
getInitials(name2); // { first: 'J', last: 'M' }
这是一个版本,允许您指定是否要将结果作为对象,数组或字符串返回:
答案 1 :(得分:1)
function getInitials(fullName){
var caps = fullName.replace(/[^A-Z]/g,'');
if (caps.length>=2) return caps[0]+caps[caps.length-1];
}
var initials = getInitials("John Michael Caine Rogers");
//--> "JR"
getInitials("Aaron deChazal") // "AC" (?)
getInitials("Jean-Paul François") // "JF" (?)
getInitials("Mary Smith-Jones") // "MJ" (?)
这会找到所有大写字母,然后返回第一个和最后一个(如果没有两个大写字母,则使用测试返回任何内容)。如最后所示,有些边缘情况你可能想要考虑你真正想要的东西。
答案 2 :(得分:1)
这是一个简单的函数,可以获取首字母,并且您可以指定是否要包含姓氏的首字母:
function getInitials(fullName,includeLastName) {
var initials = "";
var nameArray = fullName.split(" ");
if (nameArray.length===1 || (nameArray.length===2 && !includeLastName)) {
initials=fullName.substr(0,1);
} else {
if (!includeLastName) {
nameArray.splice(-1,1);
}
for (var i=0; i<nameArray.length; i++) {
initials+=nameArray[i].substr(0,1);
}
}
return initials.toUpperCase();
}
alert(getInitials("Kim Källström",true)); //=KK
alert(getInitials("Kim Mikael Källström",true)); //=KMK
alert(getInitials("Kim Mikael Källström",false)); //=KM
答案 3 :(得分:0)
您可以尝试使用正则表达式来获取最后一个单词的第一个字母:
var str = "John Michael Rogers";
var patt = new RegExp(/.*\s(\w)\w*/g);
var lastFirstLetter = patt.exec(str)[1];