Javascript 从可能有或可能没有氏族标记前缀的姓名中提取真实姓名

Javascript 从可能有或可能没有氏族标记前缀的姓名中提取真实姓名,javascript,java,google-sheets,spreadsheet,google-spreadsheet-api,Javascript,Java,Google Sheets,Spreadsheet,Google Spreadsheet Api,谷歌脚本不仅仅是普通的javascript。 我正试图把一个谷歌表格放在一起,显示一个在线视频游戏的排名。我已经有办法在任何给定时刻获取服务器上的玩家列表。然而,由于人们一直在加入和离开氏族,如果一个人离开和/或加入一个新的氏族,他必须重新开始排名,这将是非常令人失望的。所以我很快想出了下面的代码,希望能扫描一个玩家的名字,如果名字的开头有一个氏族标签,它就会去掉。clansPre是一些氏族标记的数组。这个想法是如果va | P1,红色| P2,.rC | P3!s] P4、[RUSS]P5、C

谷歌脚本不仅仅是普通的javascript。

我正试图把一个谷歌表格放在一起,显示一个在线视频游戏的排名。我已经有办法在任何给定时刻获取服务器上的玩家列表。然而,由于人们一直在加入和离开氏族,如果一个人离开和/或加入一个新的氏族,他必须重新开始排名,这将是非常令人失望的。所以我很快想出了下面的代码,希望能扫描一个玩家的名字,如果名字的开头有一个氏族标签,它就会去掉。clansPre是一些氏族标记的数组。这个想法是如果va | P1,红色| P2,.rC | P3!s] P4、[RUSS]P5、Crowd>P6、oo | P7和P08一起玩游戏,他们的统计数据将记录在P1、P2、P3、P4、P5、P6、P7和P08下。然而,我所能做的有限测试表明,它总是删除前3个字符,而不管名称如何。另外,cName是我尝试以字符串形式获取名称的时候,我尝试使用startWith()

var clansPre=[“va |”、“RED |”、“.rC |”、“!s]、“vaQ”、“[RUSS]、“cm |”、“Crowd>”、“oo”];
var numClans=clansPre.length;
函数名WOCLAN(名称){
var cName=name.substring(0,name.length)

对于(var cC=0;cC而言,您的尝试是正确的

然而,考虑到您的代码

var cName=name.substring(0,name.length)
似乎是多余的

您的意思是希望订阅
name
,从
0
的开始索引到
name.length
,这与

var cName=name;

现在,我编写了一个更复杂的示例,用于确定族名称是否是名称的一部分。如果是,则会删除族名称,但也会返回一个具有族名称的对象。现在,此方法不区分大小写(因为它降低了文本)。因此,如果要区分大小写的匹配,请删除两个调用
toLowerCase()

函数名woclan(名称){
如果(!name)
返回null;
var clanName='';
对于(变量i=0;i
我在下面做了一个简单的例子

$(“#提取名称”)。在('click',function()上{
变量名称=$('#玩家名称').val().split('\n');
$('#名称列表体').html('');//清除该表
name.forEach(函数(项、索引){
变量名称=名称(项目);
如果(姓名){
$('#名称列表正文')。追加($(''+项+''+名称.clanName+''+名称.playerName+'');
}
});
});
变量clansPre=[“va |”、“RED |”、“.rC |”、“!s]、“vaQ”、“[RUSS]、“cm”、“Crowd>”、“oo”];
函数名WOCLAN(名称){
如果(!name)
返回null;
var clanName='';
对于(变量i=0;i


每行一个全名

厕所 .rC | sally [罗斯]超人 哦|蝙蝠侠 红人 红色| va|
摘录名称 原名 族名 球员姓名
函数removeClanTag(名称){
var index=name.search(/>;
返回name.substring(索引+1);
}
变量u=[
“标记>用户名”,
“标记|用户名”,
“标记用户名”,
“标记]用户名”,
];
用于(变量i在u中){
console.log(removeClanTag(u[i]);

}
谢谢!我认为这会有很大帮助!切换到名为“CurGame”的工作表,这样它就可以在普通javascript中工作,但当我将其放入google脚本时,它就不工作了。它给出了“TypeError:无法在对象vm16中找到函数startsWith”。因此,我处于进退两难的境地。支持页面上说要在这里提问,但你的回答非常适合我现在意识到我明确要求的内容。我觉得这样做很糟糕,但如果我想得到答案,我需要将你的回答取消标记为已接受的答案。很抱歉,我觉得这样做很糟糕。明白。将查看谷歌脚本并用答案更新。它有效。我将不得不做更多的测试,但更多的问题将是次要的,我应该能够自己解决这些问题。谢谢谢谢谢谢谢谢!!!!@DylanSchneiderman很高兴你让它工作。并扩展了我对谷歌工作表代码的知识。
var clansPre = ["va|", "RED|", ".rC|", "!s]", "vaQ'", "[RUSS]", "cm|", "Crowd>", "oo|"];
var numClans = clansPre.length;
function nameWoClan(name){
  var cName = name.substring(0, name.length)
  for(var cC = 0; cC<numClans; cC++) {
    if(cName.search(clansPre[cC]) == 0) {
      return cName.substring(clansPre[cC].length, name.length)
    }
  }
  return cName;
}
function nameWoClan(name) {
  if (!name)
    return null;
  var clanName = '';
  for (var i = 0; i < clansPre.length; i++) {
    if (name.toLowerCase().startsWith(clansPre[i].toLowerCase())) {
      clanName = name.substring(0, clansPre[i].length);
      name = name.substring(clansPre[i].length);
      break;
    }
  }
  return {
    clanName: clanName,
    playerName: name
  }
}