Javascript 如何修复拆分属性,给出未定义的
我需要有一个正确的函数来测试,它给我一个全名中的字符串,我必须拆分它并使用for循环将字母更改为char“*”。我想让第一个大写字母保持可见:这是我的代码:Javascript 如何修复拆分属性,给出未定义的,javascript,Javascript,我需要有一个正确的函数来测试,它给我一个全名中的字符串,我必须拆分它并使用for循环将字母更改为char“*”。我想让第一个大写字母保持可见:这是我的代码: var fullName = "Jozko Baci"; function testSamoUloha(fullName) { var splitString=fullName.split(""); for (var i=1;i<splitString[1].length;i++) { splitStr
var fullName = "Jozko Baci";
function testSamoUloha(fullName) {
var splitString=fullName.split("");
for (var i=1;i<splitString[1].length;i++) {
splitString[1].replace(splitString[1][i],"*");
}
var anonymName =splitString[0]+" "+splitString[1];
console.log(anonymName);
}
testSamoUloha();
var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);
因为(var i=1;i可以用这样的东西来做
const fullName=“Jozko Baci”;
//将名称拆分为单词(firstName、lastName)
让res=fullName.split(“”).map((word,wordIndex)=>
//如果在名字后面
wordIndex>0
//隐藏word中除第一个字符以外的所有字符
?word.split(“”).map((char,charIndex)=>(charIndex>0?'*':char)).join(“”)
//否则,显示整个单词
:字
).join(“”);//将单词重新连接在一起(firstName,lastName)
console.log(res);
上面的代码看起来不错,只是在这行中添加了一个补丁
拆分字符串[1]。替换(拆分字符串[1][i],“*”)
还为var splitString=fullName.split(“”;
取代
fullName.split(""); // ['J', 'o', 'z', 'k', 'o', ' ', 'B', 'a', 'c', 'i']
与
如果对字符串使用replace,它将在replace之后返回新字符串
,它不会重写现有字符串
例如:
var a = "hello";
a.replace('o', '*') // returns hell*
a // has hello
但如果你这样做了
a = a.replace('o', '*') // returns hell* and rewrites a
a // hell*
类似地,添加此修复后,现有代码也可以正常工作
var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);
for(var i=1;i字符串是不可变的(您不能更改它们),因此以下代码:
splitString[1].replace(splitString[1][i],"*");
在任何情况下都不起作用
我建议您创建一个临时字符串,然后在整个第二个单词上循环。如果循环的索引为0,则将字母添加到临时字符串中,否则添加一个*
:
var fullName=“Jozko Baci”;
函数testSamoUloha(全名){
var splitString=fullName.split(“”);
//创建一个临时字符串
var tempString='';
//在整个第二个单词上循环
对于(var i=0;i0){
tempString+='*';
//否则,如果索引为0,则添加字母
//改为使用临时字符串
}否则{
tempString+=splitString[1][i];
}
}
//从函数返回字符串
返回splitString[0]+''+tempString;
}
//确保将全名作为参数传递
console.log(testSamoUloha(fullName));
如果希望缩短代码,可以使用以下正则表达式:
(?<=^.+\s\S+)\w
注意:testSamoUloha
需要一个fullname
参数,但您没有提供:testSamoUloha();
应该是testSamoUloha(fullname);
另外,将字母转换为星号的标准是什么?很抱歉,什么是星号?这是一个星号:*
我已经尝试了从索引[1]开始的for循环从已经将字符串拆分为两部分,直到字符串的长度,然后将其再次提交到新的匿名变量,可以吗?哦,是的,我明白了,它对我帮助很大,非常感谢。让我知道此修复是否解决了您的问题….,如果可以,请进行投票并接受此回答非常感谢,可以理解,感谢您的帮助p!没问题,@RejzozroutkoTezbir。为之前的混乱道歉。&欢迎来到Stackoverflow。作为回报,我还没有完全理解这个函数。e在那里做什么?它来自哪里?
(?<=^.+\s\S+)\w