Javascript 递增复制的字符串编号
我有一个用户列表,有一个复制操作,通过将Copy后缀添加到用户名来复制所选用户 因此,如果有john用户名,则复制操作将创建john copy 1,如果现在用户复制此“john copy 1”,则将有“john copy 2”,依此类推 这是我正在使用的代码Javascript 递增复制的字符串编号,javascript,regex,Javascript,Regex,我有一个用户列表,有一个复制操作,通过将Copy后缀添加到用户名来复制所选用户 因此,如果有john用户名,则复制操作将创建john copy 1,如果现在用户复制此“john copy 1”,则将有“john copy 2”,依此类推 这是我正在使用的代码 private _getDuplicateUserName(userName: string, suffixIndex): string { let _duplicateName; if (userName.includes
private _getDuplicateUserName(userName: string, suffixIndex): string {
let _duplicateName;
if (userName.includes("Copy")) {
_duplicateName = userName.replace(/(\d+)+/g, (match, number) => {
const index = parseInt(number, 10) + 1;
return index.toString();
});
// for next iteration if this duplicate name exists
userName = _duplicateName;
} else {
_duplicateName = `${userName} Copy ${suffixIndex}`;
}
console.log(_duplicateName);
const _isSameName = this.users.find((_user: User) => _user.userName === _duplicateName);
if (_isSameName) {
return this._getDuplicateUserName(userName, suffixIndex + 1);
} else {
return _duplicateName;
}
}
创建重复用户名后,我将新用户推送到具有重复用户名的this.users
这是可行的,但问题是如果存在用户名john copy 1 copy 1它将与john copy 2 copy 2进行复制
我只需要替换最后一个值,我想需要更改regex,这方面有什么帮助吗?简单的任务可以通过简单的逻辑解决,例如使用array.length获取最后一个字符
var name='John';
函数changeName(用户名){
if(username.includes('Copy')){
const last=username[username.length-1]
const count=parseInt(last)//检查整数是否有效
如果(计数){
username=username.replace(/.$/,count+1)//替换最后一个字符
}否则{
用户名+=‘复制1’;
}
}否则{
用户名+=‘复制1’;
}
名称=用户名;
console.log('name',name);
}
更改名称(名称)
更改名称(名称)
更改名称(名称)
更改名称(名称)
changeName(name)
我们如何知道何时实际遇到了用户名?我们如何知道可能存在多少个copy
字符串?请使用userName.replace(/.*\b(\d+)/g,…
获取最后一个字符串number@anubhava但是我们需要一个回调正则表达式替换,为了执行增量:-)
@TimBiegeleisen,我创建了一个新用户,并使用重复的uer名称将其推送到users对象。