0

我正在处理一个接收字符串变量的项目(通过调用 ac# 函数,因为我的 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 中调用所有这些函数并将文本拆分为“,”并将它们全部放入正确的数组中。

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

谢谢!

4

2 回答 2

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();});

会给你描述的。注意可能有更好的正则表达式。

于 2013-04-04T15:39:51.707 回答
0

你必须选择:

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

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

于 2013-04-04T15:32:54.667 回答