索引和长度必须指向字符串中的位置

时间:2015-03-22 16:28:10

标签: c# string

我有这样的地址

122/852 Mansrovar社会,斋浦尔,拉贾斯塔,印度

我需要编写一个提取 Mansrovar社会的函数我尝试了下面的代码但是给了我错误

 string BuildingAddress = txtAddress.Substring(0, txtAddress.IndexOf(','));
            BuildingAddress = BuildingAddress.Substring(BuildingAddress.IndexOf(' '), BuildingAddress.Length);

2 个答案:

答案 0 :(得分:4)

string.Substring(int, int)的第二个参数是你想要的子串的长度 - 所以

BuildingAddress = BuildingAddress.Substring(BuildingAddress.IndexOf(' '),
                                            BuildingAddress.Length);

仅在IndexOf返回0时才有效。

如果你只想从第一个空间开始""您可以使用单个参数来重载:

BuildingAddress = BuildingAddress.Substring(BuildingAddress.IndexOf(' '));

请注意,如果字符串不包含空格,那么仍然会失败 - 如果它有效,它将具有前导空格。你可能想要:

BuildingAddress = BuildingAddress.Substring(BuildingAddress.IndexOf(' ') + 1);

始终有效,并跳过前导空格 - 尽管它只会跳过一个空间。

答案 1 :(得分:2)

String.Substring有两个参数:startlength。你正在使用它,好像第二个是end。不是。

BuildingAddress =
    BuildingAddress.Substring(BuildingAddress.IndexOf(' '),
                              BuildingAddress.Length - BuildingAddress.IndexOf(' '));