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