如何在格式化文本上使用.split

时间:2013-07-08 07:05:49

标签: javascript arrays parsing split

我的用户从其他网站复制数据,如下所示:

flight-tickets

粘贴时看起来像这样:

  

休斯顿(IAH)到坎昆(CUN) - 星期五,7月12日   United United 1084 Dep:6:58 PM Arr:9:15 PM 2h 17m Boeing 737 Economy(E)

     

Cancun(CUN)到休斯顿(IAH) - Sun,7月14日   United United 1017 Dep:下午2:00 Arr:4:23 PM 2h 23m Boeing 737 Economy(E)

我正在解析使用以下内容复制的文本。

var arrayOfLines = document.getElementById("fltInput").value.split('\n');
var arrayOfWords = arrayOfLines[1].split(" ");

我希望arrayOfWords[1] UnitedarrayOfWords[2]1084,而是1084 Dep:6:58PM Arr::

这是JsFiddle。 (滑动页面上的滑块以查看我的意思。)

显然问题是.split(" ")没有将复制表中的不同单元格视为空格,因此不会将文本拆分到我期望的位置。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是因为你的字符串不是用单个空格统一分隔的。它们之间可能有两个或三个空格。

在3个空格上拆分的修改版本:

http://jsfiddle.net/zT38R/6/

var arrayOfLines = document.getElementById("fltInput").value.split('\n');
 console.log(arrayOfLines);
var arrayOfWords = arrayOfLines[1].split("  ");// changed here

正确格式化输入。 或者更好地使用基于正则表达式的数据解析。

答案 1 :(得分:1)

使用下面的正则表达式拆分任何空格都可以解决这个问题,这要归功于answer

var arrayOfWords = arrayOfLines[1].split(/\s+/g);