0

私は文字列変数を受け取るプロジェクトに取り組んでいます (私の c# コードは HTTPWebrequest を作成し、データを受け取り、その関数が正しいデータを返すため、ac# 関数を呼び出すことによって)。

文字列変数は次のようになります。

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で)各情報を右の列に入れることができるテーブルを作りたいからです。

JavaScript でやりたいことを示すために、C# で短いプログラムを作成します。

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関数で作成することを考えた解決策がない場合、1つの関数はすべてのバス番号、1つはすべての宛先、もう1つは常に表示されます。これらすべての関数を 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();});

あなたが説明したものを提供します。nbこれにはもっと良い正規表現があるかもしれません。

于 2013-04-04T15:39:51.707 に答える
0

オプションが必要です:

  1. 標準の js 文字列操作関数 (substr、regex など) を使用して、この文字列用の独自のパーサーを作成します。ここではコードを提供しません。これは自分で行う必要があるものです。しかし、これはエレガントな解決策ではありません。これはあなたの問題に対する直接的な解決策です。

  2. この文字列を生成する C# コードを変更できる場合は、文字列ではなく JSON を生成するように完全に変更できます。このプロセスはシリアライゼーションと呼ばれ、慣れておく必要があります。このソリューションは、最初のソリューションよりもエレガントです。

于 2013-04-04T15:32:54.667 に答える