特定空格数的分割字符串 - C#

时间:2016-06-27 18:23:35

标签: c# string split substring

我有一个字符串North Ridge NJ 01234我想将它们拆分为City,State和zip以存储到数据库中。我试图基于空格分割,我得到四个子串而不是三个。有什么方法可以向后拆分,但只能在两个空格上分开吗?

3 个答案:

答案 0 :(得分:6)

如果你可以假设最后一个数组元素是ZIP,那么之前的状态代码是

string[] words = s.Split(' ');

var zip = words[words.Length - 1];
var state = words[words.Length - 2];
var city = string.Join(" ", words, 0, words.Length - 2);

使用string.Join overloa d,它允许您指定要加入的起始索引和数组元素的数量。

请注意,如果假设不成立,代码可能会失败。例如,如果可以通过空格或制表符分隔数据,则需要将两个字符都提供给string.Split()。如果错误数据输入可能导致多个空格字符,您需要在运行此代码之前检查该可能性(例如New York, NY 12345)。

答案 1 :(得分:0)

我使用了一个简单的正则表达式。

> string test = "North Ridge NJ 01234";
> Regex address = new Regex(@"([\w ]*) (\w\w) (\d\d\d\d\d)");
> address.Split(test)
string[5] { "", "North Ridge", "NJ", "01234", "" }

如果有人知道如何不让空琴弦回来,我很乐意听到。这应该适用于您拥有此表单的任何地址。

答案 2 :(得分:-2)

也许是这样的:

static void Main()
{
    string s = "North Ridge NJ 01234";

    //Following gives {01234, NJ, Ridge, North}
    var words = s.Split(' ').ToList();
    words.Reverse();

    string zip = words[0];
    string state = words[1];
    string city = s.Replace(state + " " + zip, "");
}