javascript以特殊字符分割字符串

Posted

技术标签:

【中文标题】javascript以特殊字符分割字符串【英文标题】:javascript splitting a string at special character 【发布时间】:2014-10-05 15:28:25 【问题描述】:

我正在尝试“智能”预填写表格,我想根据用户电子邮件地址预填写名字和姓氏输入,例如,

jon.doe@email.com 返回 Jon Doe jon_doe@email.com 返回 Jon Doe jon-doe@email.com 返回 Jon Doe

我已经设法得到@之前的字符串,

var email = letters.substr(0, letters.indexOf('@'));

但是当分隔符可以是多个值时,我不知道如何拆分(),我可以这样做,

email.split("_")

但是如何在其他电子邮件地址上拆分有效的特殊字符?

【问题讨论】:

什么是“特殊字符”?请注意,电子邮件地址中的所有字符均有效。 【参考方案1】:

正则表达式 --

email.split(/[_\.-]/)

这个匹配(因此拆分)任何(字符集,由 [] 表示)_、. 或 -。

这里是学习正则表达式的好资源:http://qntm.org/files/re/re.html

【讨论】:

你应该对你的答案提供更多解释【参考方案2】:

如果您定义了分隔符,下面的代码可以为您返回所有替代项。

var arr = ["_",".","-"];

var email = letters.substr(0, letters.indexOf('@'));
arr.map(function(val,index,rest)
   var r = email.split(val);
   if(r.length > 1)
     return r.join(' ');
   
   return "";

);

【讨论】:

【参考方案3】:

您可以使用regular expression 拆分字符串。要匹配._-,您可以使用字符类,例如[.\-_]javascript 中正则表达式的语法是 /expression/,因此您的示例如下所示:

email.split(/[\.\-_]/);

请注意,反斜杠是为了防止 .- 被解释为特殊字符。 . 是代表任何字符的特殊字符类。在字符类中,-可用于指定范围,如[a-z]

如果您需要一个动态的字符列表来分割,您可以使用RegExp 构造函数构建一个正则表达式。例如:

var specialChars = ['.', '\\-', '_'];
var specialRegex = new RegExp('[' + specialChars.join('') + ']');
email.split(specialRegex);

有关 JavaScript 正则表达式的更多信息,请访问 MDN。

【讨论】:

【参考方案4】:

我创建了一个 jsFiddle 来展示如何做到这一点:

function printName(email)
    var name = email.split('@')[0];
    // source : http://***.com/questions/650022/how-do-i-split-a-string-with-multiple-separators-in-javascript
    var returnVal = name.split(/[._-]/g);
    return returnVal;

http://jsfiddle.net/ts6nx9tt/1/

【讨论】:

【参考方案5】:

您是正确的,您需要使用split function。

Split 函数通过使用参数来拆分字符串。可以通过正则表达式拆分多个值。对于您的使用,请尝试类似

var re = /[\._\-]/;
var split = email.split(re, 2);

这应该会产生一个包含两个值的数组,即名字/名字。第二个参数是返回的元素数量。

【讨论】:

【参考方案6】:

JavaScript 的 string split method 可以采用正则表达式。

例如,以下内容将拆分为 .-_

"i-am_john.doe".split(/[.\-_]/)

返回以下内容。

["i", "am", "john", "doe"]

【讨论】:

【参考方案7】:

您可以使用正则表达式来做到这一点,只需提供方括号中的字符列表并在必要时转义。

email.split("[_-\.]");

你是这个意思吗?

【讨论】:

如果要传入正则表达式,不能是字符串字面量。 split("[_-\.]"); 将按照准确的完整序列进行拆分 [_-\.]【参考方案8】:

您可以对要拆分的内容使用正则表达式。例如,您可以拆分任何不是字母的内容:

var parts = email.split(/[^A-Za-z]/);

演示:http://jsfiddle.net/Guffa/xt3Lb9e6/

【讨论】:

以上是关于javascript以特殊字符分割字符串的主要内容,如果未能解决你的问题,请参考以下文章

java: string 字符串的分割方法

Android--split()分割字符串特殊用法

用特殊字符“|”分割字符串[复制]

Java字符串分割

Java字符串分割

Java字符串分割