我正在开发一个项目,我收到一个字符串变量(通过调用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中调用所有这些函数并将文本拆分为“,”并将它们全部放在正确的数组中。
有人可以帮助我吗? 我希望我的问题足够清楚......
谢谢!
答案 0 :(得分:0)
你必须选择:
使用标准的js字符串操作函数(substr,regex等)为此字符串编写自己的解析器。我不会在这里提供代码,这是你自己需要做的事情。但这不是优雅的解决方案,这可以直接解决您的问题。
如果您可以修改生成此字符串的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();});
会给你所描述的内容。注:那里可能是更好的正则表达式。