C#将字符串分成多个部分

时间:2011-04-21 16:48:33

标签: c#

我有以下字符串:

+53.581N -113.587W 4.0 Km W of Edmonton, AB

在C#中无论如何都要将此字符串分解为Long。 LATT。然后是城市国家并且丢弃中间部分?

基本上我想要3个字符串:

Long
Latt
Location.

这个字符串有多种形式吗?它们属于同一种形式,但显然数据会有所不同。

由于

4 个答案:

答案 0 :(得分:4)

使用正则表达式来实现此目的 - 例如:

string input = @"+53.581N -113.587W 4.0 Km W of Edmonton, AB";
Match match = Regex.Match(input, @"^(?<latitude>[+\-]\d+\.\d+[NS])\s+(?<longitude>[+\-]\d+\.\d+[EW])\s+\d+\.\d+\s+Km\s+[NSEW]\s+of\s+(?<city>.*?),\s*(?<state>.*)$");
if (match.Success) {
    string lattitude = match.Groups["lattitude"].value;
    string longitude = match.Groups["longitude"].value;
    string city = match.Groups["city"].value;
    string state = match.Groups["state"].Value;
}

答案 1 :(得分:2)

就像在所有语言中一样,有可能凭借那些非常棒的正则表达式的力量。

如果您不熟悉正则表达式,我建议您学习它们。他们太棒了。严重。

这是一个开始使用.NET regexp的教程:

http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx

答案 2 :(得分:1)

您可以使用正则表达式捕获这些部分。请参阅http://www.c-sharpcorner.com/uploadfile/prasad_1/regexppsd12062005021717am/regexppsd.aspx

应该起作用的模式如下(考虑到你提供的一个例子):

^([+-]\d+\.\d+\w) ([+-]\d+\.\d+\w) (.*?)$

答案 3 :(得分:1)

使用string.Split(Char [],Int32)重载

var input = "+53.581N -113.587W 4.0 Km W of Edmonton, AB";
var splitArray = input.Split(new char[]{' '},3);

您将获得Long,Lat和Location。 (注意3 - 这会将数组拆分三次)

对建议正则表达式的其他答案的回应:

如果格式相同,请避免使用正则表达式。上面的选项要简单得多,正则表达式很快就会变得难以理解。