【问题标题】:Javascript arrays email substring into full name, firstname and lastnameJavascript 数组将电子邮件子字符串转换为全名、名字和姓氏
【发布时间】:2021-05-22 03:12:08
【问题描述】:
      I know my questions are similar to other questions but I could not figure it. 

我正在练习 javascript。我有一系列电子邮件。从那封电子邮件中,我想在一个映射函数中得到三个字符串全名、名字和姓氏的输出。我可以通过阅读一个堆栈溢出问题来获得输出名字。我可以通过输出john.doe 获得全名,我想要johndoe。无法弄清楚姓氏doe

我的示例电子邮件地址是这样的:john.doe@co.uk

我的预期输出是

名字:'约翰'

全名:johndoe

姓氏:doe

这是我的代码

const Names = (emails) => {
  emails.map(i => {
    console.log("firstname", i.substring(0, i.indexOf(".")));
    console.log("fullname", i.substring(0, i.lastIndexOf("@")));
    console.log("lastname");
  })
};

Names(emails)

const emails = [
  "peter.pittman@taitos.com",
  "ayden.reed@starkindustries.ss",
  "kiefer.franks@amazonia.hk",
  "oz.mcguire@tortelloni.zw",
  "ellisandro.noble@bluthhousing.party",
  "alyas.briggs@taitos.ninja",
  "windsor.raymond@hungryhungyhippopottumoses.co.uk",
  "daniyal.brock@hungryhungyhippopottumoses.ug",
  "samatar.benson@duffbeer.org",
  "jaime.freeman@gringottsbank.li",
  "aaron.pace@starkindustries.org",
  "guerin.mcgowan@taitos.li",
  "believe.cote@virtucon.hk",
  "abdalroof.ray@oscorp.co.uk",
  "blake.barrett@tortelloni.org",
  "bradlie.brooks@dundermifflin.ug",
  "rayyan.garza@tortelloni.ug",
  "declan.wood@dundermifflin.ug",
  "tymon.blackburn@oscorp.com",
  "joash.duffy@wonkaindustries.ug",
  "aleksander.ford@umbrellacorporation.fi",
  "jaida.colon@macrosloft.se",
  "jevan.jensen@lospolloshermanos.zw",
  "abubakar.palmer@dundermifflin.org",
  "cator.joyce@lospolloshermanos.org",
  "valen.henry@gringottsbank.co.uk",
  "taylor-jay.blackburn@wonkaindustries.ug",
  "leonardo.mcfadden@goldenstatuettes.co.uk",
  "noel.schneider@hungryhungyhippopottumoses.co.uk",
  "will.osborne@tasavallanpresidentti.com",
  "arda.aguilar@oscorp.fi",
  "omri.walls@virtucon.ug",
  "lliam.briggs@tortelloni.se",
  "kris.lester@amazonia.fi",
  "skye.soto@wonkaindustries.se",
  "dermot.vang@goldenstatuettes.com",
  "cruiz.simmons@cookykitchens.co.uk",
  "tymoteusz.riley@tortelloni.fi",
  "kaidyn.hays@aperaturescience.party",
  "apisai.fletcher@oscorp.co.uk",
  "kedrick.mcfadden@cookykitchens.com",
  "archibald.elliott@gringottsbank.hk",
  "kjae.hurley@umbrellacorporation.com",
  "tymon.nielsen@hungryhungyhippopottumoses.fi",
  "james.dejesus@amazonia.party",
  "reno.silva@gringottsbank.ug",
  "tayyib.brooks@taitos.ss",
  "cormack.alexander@duffbeer.ss",
  "obieluem.guerra@umbrellacorporation.party",
  "hector.moran@dundermifflin.co.uk",
  "logan.parrish@wonkaindustries.com",
  "robin.rivers@starkindustries.zw",
  "albie.spence@tasavallanpresidentti.hk",
  "qasim.schwartz@duffbeer.zw",
  "aodhan.cooper@tasavallanpresidentti.org",
  "eassan.hobbs@lospolloshermanos.org",
  "parkash.juarez@wonkaindustries.party",
  "teos.horton@haxhoont.se",
  "kuba.larsen@duffbeer.ninja",
  "eisa.beard@umbrellacorporation.li",
  "hamza.french@starkindustries.org",
  "sung.randall@taitos.ss",
  "samir.bond@virtucon.org",
  "conlyn.mckee@goldenstatuettes.com",
  "thiago.hooper@starkindustries.com",
  "demetrius.holland@macrosloft.zw",
  "uchenna.oneill@hungryhungyhippopottumoses.zw",
  "windsor.steele@hungryhungyhippopottumoses.fi",
  "keiryn.macias@tasavallanpresidentti.org",
  "kehinde.allen@cookykitchens.hk",
  "yuri.ramirez@macrosloft.zw",
  "ruan.perez@umbrellacorporation.org",
  "dyllon.young@dundermifflin.zw",
  "lockey.mcmahon@goldenstatuettes.fi",
  "lyndsay.haynes@goldenstatuettes.ninja",
  "dareh.grimes@macrosloft.co.uk",
  "veeran.vinson@cookykitchens.fi",
  "jayke.schroeder@lospolloshermanos.org",
  "aronas.berry@bluthhousing.li",
  "jonothan.donaldson@gringottsbank.zw",
  "kenzeigh.weber@umbrellacorporation.se",
  "cesare.huber@tasavallanpresidentti.com",
  "uzair.harris@virtucon.ninja",
  "kelan.yates@taitos.co.uk",
  "thomson.gonzales@bluthhousing.co.uk",
  "keaton.green@umbrellacorporation.hk",
  "jazeb.kinney@duffbeer.co.uk",
  "ronald.flores@starkindustries.hk",
  "alastair.moses@umbrellacorporation.se",
  "ogheneochuko.ratliff@aperaturescience.se",
  "kenton.conley@gringottsbank.ninja",
  "kashif.trujillo@bluthhousing.hk",
  "saghun.ayers@taitos.hk",
  "kamil.eaton@lospolloshermanos.org",
  "bailee.henson@goldenstatuettes.li",
  "alexei.stanton@haxhoont.li",
  "basher.clarke@taitos.li",
]



const Names = (emails) => {
  emails.map(i => {
    console.log("firstname", i.substring(0, i.indexOf(".")));
    console.log("fullname", i.substring(0, i.lastIndexOf("@")));
    console.log("lastname");
  })
};

Names(emails)

【问题讨论】:

  • 查看split的文档
  • 拆分返回数组。我希望它们中的每一个都是字符串
  • split('@')[0].split('.') 使用 arr[index] 可以得到它的值 :)

标签: javascript arrays string substring


【解决方案1】:

使用替换删除'.'。

lastname 可以在 '.' 之间的子字符串中获取和'@'

const emails = [
  "peter.pittman@taitos.com",
  "ayden.reed@starkindustries.ss",
  "kiefer.franks@amazonia.hk",
  "oz.mcguire@tortelloni.zw",
  "ellisandro.noble@bluthhousing.party",
  "alyas.briggs@taitos.ninja",
  "windsor.raymond@hungryhungyhippopottumoses.co.uk",
  "daniyal.brock@hungryhungyhippopottumoses.ug",
  "samatar.benson@duffbeer.org",
  "jaime.freeman@gringottsbank.li",
  "aaron.pace@starkindustries.org",
  "guerin.mcgowan@taitos.li",
  "believe.cote@virtucon.hk",
  "abdalroof.ray@oscorp.co.uk",
  "blake.barrett@tortelloni.org",
  "bradlie.brooks@dundermifflin.ug",
  "rayyan.garza@tortelloni.ug",
  "declan.wood@dundermifflin.ug",
  "tymon.blackburn@oscorp.com",
  "joash.duffy@wonkaindustries.ug",
  "aleksander.ford@umbrellacorporation.fi",
  "jaida.colon@macrosloft.se",
  "jevan.jensen@lospolloshermanos.zw",
  "abubakar.palmer@dundermifflin.org",
  "cator.joyce@lospolloshermanos.org",
  "valen.henry@gringottsbank.co.uk",
  "taylor-jay.blackburn@wonkaindustries.ug",
  "leonardo.mcfadden@goldenstatuettes.co.uk",
  "noel.schneider@hungryhungyhippopottumoses.co.uk",
  "will.osborne@tasavallanpresidentti.com",
  "arda.aguilar@oscorp.fi",
  "omri.walls@virtucon.ug",
  "lliam.briggs@tortelloni.se",
  "kris.lester@amazonia.fi",
  "skye.soto@wonkaindustries.se",
  "dermot.vang@goldenstatuettes.com",
  "cruiz.simmons@cookykitchens.co.uk",
  "tymoteusz.riley@tortelloni.fi",
  "kaidyn.hays@aperaturescience.party",
  "apisai.fletcher@oscorp.co.uk",
  "kedrick.mcfadden@cookykitchens.com",
  "archibald.elliott@gringottsbank.hk",
  "kjae.hurley@umbrellacorporation.com",
  "tymon.nielsen@hungryhungyhippopottumoses.fi",
  "james.dejesus@amazonia.party",
  "reno.silva@gringottsbank.ug",
  "tayyib.brooks@taitos.ss",
  "cormack.alexander@duffbeer.ss",
  "obieluem.guerra@umbrellacorporation.party",
  "hector.moran@dundermifflin.co.uk",
  "logan.parrish@wonkaindustries.com",
  "robin.rivers@starkindustries.zw",
  "albie.spence@tasavallanpresidentti.hk",
  "qasim.schwartz@duffbeer.zw",
  "aodhan.cooper@tasavallanpresidentti.org",
  "eassan.hobbs@lospolloshermanos.org",
  "parkash.juarez@wonkaindustries.party",
  "teos.horton@haxhoont.se",
  "kuba.larsen@duffbeer.ninja",
  "eisa.beard@umbrellacorporation.li",
  "hamza.french@starkindustries.org",
  "sung.randall@taitos.ss",
  "samir.bond@virtucon.org",
  "conlyn.mckee@goldenstatuettes.com",
  "thiago.hooper@starkindustries.com",
  "demetrius.holland@macrosloft.zw",
  "uchenna.oneill@hungryhungyhippopottumoses.zw",
  "windsor.steele@hungryhungyhippopottumoses.fi",
  "keiryn.macias@tasavallanpresidentti.org",
  "kehinde.allen@cookykitchens.hk",
  "yuri.ramirez@macrosloft.zw",
  "ruan.perez@umbrellacorporation.org",
  "dyllon.young@dundermifflin.zw",
  "lockey.mcmahon@goldenstatuettes.fi",
  "lyndsay.haynes@goldenstatuettes.ninja",
  "dareh.grimes@macrosloft.co.uk",
  "veeran.vinson@cookykitchens.fi",
  "jayke.schroeder@lospolloshermanos.org",
  "aronas.berry@bluthhousing.li",
  "jonothan.donaldson@gringottsbank.zw",
  "kenzeigh.weber@umbrellacorporation.se",
  "cesare.huber@tasavallanpresidentti.com",
  "uzair.harris@virtucon.ninja",
  "kelan.yates@taitos.co.uk",
  "thomson.gonzales@bluthhousing.co.uk",
  "keaton.green@umbrellacorporation.hk",
  "jazeb.kinney@duffbeer.co.uk",
  "ronald.flores@starkindustries.hk",
  "alastair.moses@umbrellacorporation.se",
  "ogheneochuko.ratliff@aperaturescience.se",
  "kenton.conley@gringottsbank.ninja",
  "kashif.trujillo@bluthhousing.hk",
  "saghun.ayers@taitos.hk",
  "kamil.eaton@lospolloshermanos.org",
  "bailee.henson@goldenstatuettes.li",
  "alexei.stanton@haxhoont.li",
  "basher.clarke@taitos.li",
]



const Names = (emails) => {
  emails.map(i => {
    console.log("firstname:", i.substring(0, i.indexOf(".")),
                ", fullname:", i.substring(0, i.lastIndexOf("@")).replace(".", ""),
                ", lastname:", i.substring(i.indexOf(".")+1, i.lastIndexOf("@")));
  })
};

Names(emails)

【讨论】:

    【解决方案2】:

    对于全名,您可以使用replace(".", "") 删除“。” 所以对于全名,它可以是: i.substring(0, i.lastIndexOf("@")).replace(".", "")

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

    【讨论】:

      【解决方案3】:

      你可以试试这个

      const Names = (emails) => {
        emails.forEach(i => {
          const indexDot = i.indexOf(".");
          const indexAt = i.lastIndexOf("@");
          console.log("firstname", i.substring(0, indexDot));
          console.log("fullname", i.substring(0, indexAt));
          console.log("lastname", i.substring(indexDot+1, indexAt));
        })
      };
      

      【讨论】:

        【解决方案4】:

        您可以使用array#mapstring#split 来获取名称。

        const emails = [ "peter.pittman@taitos.com", "ayden.reed@starkindustries.ss", "kiefer.franks@amazonia.hk", "oz.mcguire@tortelloni.zw", "ellisandro.noble@bluthhousing.party", "alyas.briggs@taitos.ninja", "windsor.raymond@hungryhungyhippopottumoses.co.uk", "daniyal.brock@hungryhungyhippopottumoses.ug", "samatar.benson@duffbeer.org", "jaime.freeman@gringottsbank.li", "aaron.pace@starkindustries.org", "guerin.mcgowan@taitos.li", "believe.cote@virtucon.hk", "abdalroof.ray@oscorp.co.uk", "blake.barrett@tortelloni.org", "bradlie.brooks@dundermifflin.ug", "rayyan.garza@tortelloni.ug", "declan.wood@dundermifflin.ug", "tymon.blackburn@oscorp.com", "joash.duffy@wonkaindustries.ug", "aleksander.ford@umbrellacorporation.fi", "jaida.colon@macrosloft.se", "jevan.jensen@lospolloshermanos.zw", "abubakar.palmer@dundermifflin.org", "cator.joyce@lospolloshermanos.org", "valen.henry@gringottsbank.co.uk", "taylor-jay.blackburn@wonkaindustries.ug", "leonardo.mcfadden@goldenstatuettes.co.uk", "noel.schneider@hungryhungyhippopottumoses.co.uk", "will.osborne@tasavallanpresidentti.com","arda.aguilar@oscorp.fi", "omri.walls@virtucon.ug", "lliam.briggs@tortelloni.se", "kris.lester@amazonia.fi", "skye.soto@wonkaindustries.se", "dermot.vang@goldenstatuettes.com", "cruiz.simmons@cookykitchens.co.uk"],
            users = emails.map(mail => {
              const [fullName] =  mail.split('@');
              const [firstName, lastName] = fullName.split('.');
              return { fullName: `${firstName}${lastName}`, firstName, lastName };
            });
        console.log(users);
        .as-console-wrapper { max-height: 100% !important; top: 0; }

        【讨论】:

        • 我想要这样的字符串输出 john, doe, johndoe
        【解决方案5】:

        const emails=["peter.pittman@taitos.com","ayden.reed@starkindustries.ss","kiefer.franks@amazonia.hk","oz.mcguire@tortelloni.zw","ellisandro.noble@bluthhousing.party","alyas.briggs@taitos.ninja","windsor.raymond@hungryhungyhippopottumoses.co.uk","daniyal.brock@hungryhungyhippopottumoses.ug"]
        
        let re = /^(?<first>\w+)\.(?<second>\w+)@/
        
        let result = emails.map(e => {
            let {first,second} = e.match(re).groups
            return {fulll:first+second,first,second}
        })
        
        console.log(result)

        【讨论】:

          【解决方案6】:

          如果地址的电子邮件可以包含其他字符而不是单词字符,并且您想检查@ 之后是否有字符以及完整格式,您还可以使用如下模式:

          ^([^\s@.]+)\.([^\s@.]+)@[^\s@]+$
          

          然后模式匹配:

          • ^ 字符串开始
          • ([^\s@.]+) 捕获 group 1,匹配除空白字符以外的任何字符,@.
          • \.匹配一个点
          • ([^\s@.]+) 捕获 group 2,匹配除空白字符以外的任何字符,@.
          • @[^\s@]+ 匹配 @ 后跟 1 个或多个除 @ 以外的字符
          • $字符串结束

          Regex demo

          在代码中,检查是否有匹配项并使用 2 个捕获组。如果不匹配,请保持字符串不变,以免出现未定义或意外行为。

          const emails = ["peter.pittman@taitos.com", "peter@taitos.com"]
          let regex = /^([^\s@.]+)\.([^\s@.]+)@[^\s@]+$/
          
          let result = emails.map(s => {
            let m = s.match(regex);
            if (m) {
              return {
                "fullname": m[1] + m[2],
                "firstname": m[1],
                "lastname": m[2]
              }
            }
            return s;
          })
          
          console.log(result)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-16
            • 2017-03-05
            • 2011-10-01
            • 2020-12-01
            • 2021-12-06
            • 1970-01-01
            相关资源
            最近更新 更多