1

我的用户从另一个网站复制数据,如下所示:

机票

粘贴时看起来像这样:

休斯顿 (IAH) 至坎昆 (CUN) - 7 月 12 日星期五
United United 1084 出发时间:下午 6:58 到达:晚上 9:15 2h 17m 波音 737 经济舱 (E)

坎昆 (CUN) 至休斯顿 (IAH) - 7 月 14 日
星期日 United United 1017 出发时间:下午 2:00 到达:下午 4:23 2h 23m 波音 737 经济舱 (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(" ")没有将复制表中的不同单元格视为空格,因此没有将文本拆分到我期望的位置。

我怎样才能解决这个问题?

4

2 回答 2

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

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

于 2013-07-08T07:13:05.593 回答
1

多亏了这个答案,使用下面的正则表达式来分割任何空格为我解决了这个问题

var arrayOfWords = arrayOfLines[1].split(/\s+/g);
于 2013-07-08T07:25:40.933 回答