如何存储字符串值,如下面的数组值,而不用括号分隔逗号作为lattitude&经度

时间:2015-12-10 06:02:05

标签: javascript c# jquery

 string locationPoints= "(29.67850809103362, 79.74288940429688),(29.367814384775375, 79.29519653320312),(29.561512529746768, 79.20455932617188),(29.69759650228319, 79.45449829101562)"; /* C# code */

    success: function (data) {   /* javascript code
                var points = [];
                points[0] = [25.1420, 55.1861];
                points[1] = [25.001225, 55.657674];
                points[2] = [25.3995, 55.4796];          .... }

将c#方法的位置点传递给jqueryajax成功函数。
    我需要将locationPoints传递给javascriptMVCArray以在地图上绘制多边形。在这里我必须存储与上述点数组相同的locationPoints。但我不知道如何存储。请允许任何人帮助我。

3 个答案:

答案 0 :(得分:0)

不要在不需要的地方使用正则表达式。这不是你需要正则表达式的地方,所以不要去那里。 总结和澄清:不要使用正则表达式。

一些分裂和修剪将以更快的速度完成相同的工作:

                        // First we split by "),(" to get each of the points
var res = locationPoints.Splits(new[]{"),("})

                        // Each point-string will be handled to produce Lat and Lng
                        .Select(pt =>
                               {
                                   // Remove '(' and ')' to clean first/last points
                                   // And split by comma to get the two components
                                   var s = pt.Trim('()').Split(',');

                                   var lat = s[0].Trim();
                                   var lng = s[1].Trim();

                                   // Choose how to represent each point, example:
                                   return new LatLng {Lat=lat, Lng=lng};
                               })
                        // Make an array out of that
                        .ToArray();

答案 1 :(得分:0)

所以你必须玩一下字符串。用逗号分隔,删除额外的括号等。

 var locationPoints= "(29.67850809103362, 79.74288940429688),(29.367814384775375, 79.29519653320312),(29.561512529746768, 79.20455932617188),(29.69759650228319, 79.45449829101562)";

 var getPoints = function(){
   var pairs = locationPoints.split('),');
   var orderedPairs = [];
   pairs[pairs.length-1] = pairs[pairs.length-1].slice(0,-1);
   pairs.forEach(function(pair, index, array){
     array[index] = pair.substring(1);
     var orderedPair = array[index].split(',');
     orderedPairs.push([parseFloat(orderedPair[0]), parseFloat(orderedPair[1])]);
   });

   orderedPairs.forEach(function(pair, index, arr){
      $('#points').append('[' + pair[0] + ', ' + pair[1] + ']<br>');  
   });
 }

这是一个与之相关的人 http://plnkr.co/edit/eYEwm84f5By40oYNpHNo?p=preview

答案 2 :(得分:0)

使用正则表达式匹配,我们使用简单的代码

获得解决方案
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace testpro1
{
    class Program
    {
       public string[] poarr = null;

        static void Main(string[] args)
        {
            string strRegex = @"([0-9]*\.[0-9]+|[0-9]+)";
            string strTargetString = @"(29.67850809103362, 79.74288940429688),(29.367814384775375, 79.29519653320312),(29.561512529746768, 79.20455932617188),(29.69759650228319, 79.45449829101562)";
            //matches is the array
            Match[] matches = Regex.Matches(strTargetString, strRegex)
                         .Cast<Match>()
                         .ToArray();
            Console.WriteLine("The Array Values are:\n");
            foreach (var item in matches)
            {
                Console.WriteLine(item.ToString());
            }
            Console.ReadLine();
        }
    }
}