我一直在使用googlemaps,我现在正在寻找格式坐标.
我得到以下格式的坐标:
地址(坐标)缩放级别.
我使用indexof方法得到"("+1的开头,这样我得到坐标的第一个数字,并将这个值存储在我称之为"start"的变量中.
然后我做同样的事情,但这次我得到索引")"-2得到最后一个坐标的最后一个数字,并将这个值存储在我称之为"结束"的变量中.
我收到以下错误:"索引和长度必须引用string.Parameter name中的位置:length"
我得到以下字符串作为一个imparameter:
"Loddvägen 155, 840 80 Lillhärdal, Sverige (61.9593214318303,14.0585965625)5"
Run Code Online (Sandbox Code Playgroud)
根据我的计算,我应该在start变量中得到值36,在end变量中得到值65
但出于某种原因,我在开始时得到41,在结束时得到71.
为什么?
public string RemoveParantheses(string coord)
{
int start = coord.IndexOf("(")+1;
int end = coord.IndexOf(")")-2;
string formated = coord.Substring(start,end);
return formated;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试硬编码正确的值
string Test = cord.Substring(36,65);
Run Code Online (Sandbox Code Playgroud)
然后我得到以下错误:
startindex不能大于字符串的长度.参数名称startindex
我理解这两个错误的意思,但在这种情况下,它们是不正确的,因为我不会超出字符串长度值.
谢谢!
第二个参数Substring是长度(MSDN源).既然你是在传递65的第二个参数,您的通话正在试图获得之间的字符36和101 (36+65).您的字符串中没有101个字符,因此会引发错误.要获取(字符之间的数据,请使用:
public string RemoveParantheses(string coord)
{
int start = coord.IndexOf("(")+1;
int end = coord.IndexOf(")")-2;
string formated = coord.Substring(start, end - start);
return formated;
}
Run Code Online (Sandbox Code Playgroud)
编辑:它仅使用坐标的原因是因为总字符串的长度较短,并且由于坐标从第一个位置开始,因此结束坐标是最后一个位置.例如...
//using "Loddvägen 155, 840 80 Lillhärdal, Sverige (61.9593214318303,14.0585965625)5"
int start = coord.IndexOf("(") + 1; // 36
int end = coord.IndexOf(")")-2; // 65
coord.Substring(start, end); //looks at characters 35 through 101
//using (61.9593214318303,14.0585965625)5
int start = coord.IndexOf("(") + 1; // 1
int end = coord.IndexOf(")")-2; // 30
coord.Substring(start, end); //looks at characters 1 through 31
Run Code Online (Sandbox Code Playgroud)
第二个实例有效,因为31实际存在于您的字符串中.将地址添加到字符串的开头后,您的代码将不再有效.