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。但我不知道如何存储。请允许任何人帮助我。
答案 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();
}
}
}