将Javascript函数转换为c#

时间:2010-02-15 13:54:59

标签: c# javascript

我想将以下javascript函数转换为c# 有人可以帮忙吗?

function parseCoordinate(coordinate,type,format,spaced) {
    coordinate = coordinate.toString();
    coordinate = coordinate.replace(/(^\s+|\s+$)/g,''); // remove white space
    var neg = 0; if (coordinate.match(/(^-|[WS])/i)) { neg = 1; }
    if (coordinate.match(/[EW]/i) && !type) { type = 'lon'; }
    if (coordinate.match(/[NS]/i) && !type) { type = 'lat'; }
    coordinate = coordinate.replace(/[NESW\-]/gi,' ');
    if (!coordinate.match(/[0-9]/i)) {
        return '';
    }
    parts = coordinate.match(/([0-9\.\-]+)[^0-9\.]*([0-9\.]+)?[^0-9\.]*([0-9\.]+)?/);
    if (!parts || parts[1] == null) {
        return '';
    } else {
        n = parseFloat(parts[1]);
        if (parts[2]) { n = n + parseFloat(parts[2])/60; }
        if (parts[3]) { n = n + parseFloat(parts[3])/3600; }
        if (neg && n >= 0) { n = 0 - n; }
        if (format == 'dmm') {
            if (spaced) {
                n = Degrees_to_DMM(n,type,' ');
            } else {
                n = Degrees_to_DMM(n,type);
            }
        } else if (format == 'dms') {
            if (spaced) {
                n = Degrees_to_DMS(n,type,' ');
            } else {
                n = Degrees_to_DMS(n,type,'');
            }
        } else {
            n = Math.round(10000000 * n) / 10000000;
            if (n == Math.floor(n)) { n = n + '.0'; }
        }
        return comma2point(n);
    }
}

2 个答案:

答案 0 :(得分:1)

查看Regex on MSDN或快速查看Google for Regex C#

if (coordinate.match(/(^-|[WS])/i)) { neg = 1; } 

会变成:

using System.Text.RegularExpressions;

Regex myRegex = new Regex("/(^-|[WS])/i)");
if (coordinate.IsMatch(myRegex))
{
  neg=1;
}

如果它总是像上面的例子'N27 53.4891'那么你可以将它存储为字符串。如果上面的纬度是2个部分('N27'和53.4891),你需要单独访问它们,那么你可以有一个自定义的坐标类,例如。

public class coordinate
{
  public string otherPart {get; set;} // N27
  public float coordPart {get; set;} // 53.4891
}

然后您可以覆盖.toString()方法以获取'N27 53.4891'。

答案 1 :(得分:-2)

Regex myPattern =new Regex("/(^-|[WS])/i)");
if(myPattern.isMatch(coordinate))
    { neg = 1; }

看看是否有效