JavaScript字符串拆分方法分隔符

时间:2012-03-22 21:40:31

标签: javascript split delimiter

对于作业,我正在尝试按以下格式分割电话号码:(555)555-5555分成两部分。第一个是区号,它应显示“555”,第二个是应显示“555-5555”的剩余号码。

我设法得到几乎完美的显示答案,除了区号显示为“(555)”而不是“555”,这是我需要的。

如何使分隔符查找括号之间的数字?

这是我目前的代码:

function splitButtonPressed()
{
   var inputString = document.getElementById( "inputField" ).value; //Input field for numbers
   var tokens1 = inputString.split( " " ); 


   document.getElementById("areaOutput").value = tokens1[0]; 

   document.getElementById("numberOutput").value = tokens1[1];
}
编辑:我已经开始工作,谢谢大家的帮助。

4 个答案:

答案 0 :(得分:3)

如果您不必使用.split()来解决此问题,并且您想为区号添加一堆不同的分隔符,我可能会使用正则表达式执行此操作:

var phoneStr = "(123) 456-7890";
var match = phoneStr.match(/\s*\(?(\d+)[)\-\s]\s*(\d+)[\s*\-](\d+)/);

// areaCode = match[1];
// prefix = match[2];
// num = match[3];​

这是一个测试应用程序,显示它处理大量不同的电话号码:http://jsfiddle.net/jfriend00/L87rE/

以下是正则表达式的工作原理:

Any amount of whitespace  \s*
An optional left paren    \(?
A series of digits (captured for match[1])   (\d+)
Any one of several delimiters a right paren, a dash or whitespace  [)\-\s]
Any amount of whitespace   \s*
A series of digits (captured for match[2])   (\d+)
Whitespace or dash as a delimiter   [\s*\-]
A series of digits (captured for match[3])   (\d+)/

答案 1 :(得分:2)

更改

document.getElementById("areaOutput").value = tokens1[0];

document.getElementById("areaOutput").value = tokens1[0].substr(1, 3);

上面的代码所做的是从字符串中的第一个字符开始抓取tokens1[0]的子字符串,然后抓取三个字符(5,5和5)。

答案 2 :(得分:2)

这是一个使用单个.split()的人,可以使用这些灵活的电话号码格式:

"(123) 456-7890",
"123-456-7890",
" (123)456-7890",
" 123 456 7890"

var phoneStr = "(123) 456-7890";
// precondition the phone number by removing parens and trimming extra whitespace
var str = phoneStr.replace(/[\(\)]/g, " ").replace(/^\s*|\s*$/g, "");
// split on either a dash or whitespace
var parts = str.split(/-|\s+/);
// areacode == parts[0]
// prefix == parts[1]
// num == parts[2]

此处的测试用例:http://jsfiddle.net/jfriend00/UUgXM/

要使.split()操作以不同的格式生成一致的结果,它会使用几个.replace()操作来预处理.split()之前的输入。

这使用带有.split()的正则表达式,因此单个拆分可以拆分多个。

答案 3 :(得分:1)

我建议使用match()

document.getElementById("areaOutput").value = tokens1[0].match(/\d+/);