在不同的数组Javascript中拆分文本(字符串)

时间:2013-04-04 15:19:58

标签: javascript split

我正在开发一个项目,我收到一个字符串变量(通过调用c#函数,因为我的c#代码生成HTTPWebrequest并接收数据并且该函数返回正确的数据)。

字符串变量是这样的:

Bus number:15
Bus destination: Walker Titan Road
Time: 14:39:00

Bus number:11
Bus destination: Walker Titan Road
Time: 14:42:00

Bus number:X78
Bus destination: Newcastle (city centre) Eldon Square Bus Station
Time: 14:49:00

现在我想在Javascript

中的不同数组中分隔这些字符串

我希望得到以下内容:

BusNumbers[]{15,11,X78}
busDestinations][{Walker Titan Road,Walker Titan Road,Newcastle (city centre) Eldon Square Bus Station}
busTimes[]{14:39:00,14:49:00,14:49:00}

我想要这个,因为我想(在Javascript中)制作一个表格,我可以将每个信息放在右栏中。

我在c#中编写了一个简短的程序来展示我想在javascript中做什么:

string[] A1 = new string[] { "15", "X86", "54" };
        string[] A2 = new string[] { "Newcastle", "City Centre", "Monument" };
        string[] A3 = new string[] { "15:05", "16:06", "16:35" };


            for (int j = 0; j < A1.Length; j++)
            {
                listBox1.Items.Add("Busnumber: " + A1[j] + "--");
                listBox1.Items.Add(" Destination: " + A2[j] + "--");
                listBox1.Items.Add(" Time : " + A3[j] + "\n");

            }

(它是用列表框制作的,但由于这个例子并不重要......)

但是在我可以创建for循环并在表中添加所有信息之前,我想知道如何分离数组中的每个busnumber,数组中的每个busDestination以及数组中的每个busTime。

这是否存在于Javascript中?

或者我是否需要寻找其他选择?

如果我没有想到在c#3函数中做出的解决方案,其中每个函数返回正确的信息,一个函数显示所有的总线编号,一个是所有目的地,一个是所有时间。我可以在Javascript中调用所有这些函数并将文本拆分为“,”并将它们全部放在正确的数组中。

有人可以帮助我吗? 我希望我的问题足够清楚......

谢谢!

2 个答案:

答案 0 :(得分:0)

你必须选择:

  1. 使用标准的js字符串操作函数(substr,regex等)为此字符串编写自己的解析器。我不会在这里提供代码,这是你自己需要做的事情。但这不是优雅的解决方案,这可以直接解决您的问题。

  2. 如果您可以修改生成此字符串的C#代码,那么您可以完全更改它以生成JSON而不是字符串。这个过程叫做序列化,你应该熟悉它。这个解决方案比第一个解决方案更优雅。

答案 1 :(得分:0)

假设x匹配您的输入(并且输入与您提供的输入一致):

var x ='Bus number:15 \nBus destination: Walker Titan Road \nTime: 14:39:00  \nBus number:11 \nBus destination: Walker Titan Road \nTime: 14:42:00  \nBus number:X78 \nBus destination: Newcastle (city centre) Eldon Square Bus Station \nTime: 14:49:00\n';


var BusNo = x.match(/[.]*Bus number\:[\s]*([\S])+(?=\s)/g).map(function(m){return m.replace('Bus number:','');});
var BusDest = x.match(/[.]*Bus destination\:[\s]*[\w\s\(\)]*(?=\n)/g).map(function(m){return m.replace(/Bus destination\:[\s]*/,'').trim();});
var BusTime = x.match(/[.]*Time\:[\s]*[:|\d]*(?=\s)/g).map(function(m){return m.replace(/Time\:[\s]*/,'').trim();});

会给你所描述的内容。注:那里可能是更好的正则表达式。