出于某种原因,我可以让split方法起作用。老实说我不知道这个代码我做错了什么:
String address = "0.0.0.0";
String [] adr = address.split(".");
System.out.println(address);
System.out.println(adr[0]);
我在数组访问器上得到索引超出范围的错误。关于我哪里出错的任何想法?
答案 0 :(得分:15)
split()
方法需要regular-expression,而不是文字字符串,以及“。” character在正则表达式中具有特殊含义。拆分文字“。”字符,你需要转义它,以便正则表达式解析器理解你想要的。
试试这样:
String [] adr = address.split("\\.");
请注意,基本上必须将它转义两次,因为您希望正则表达式解析器获取字符串“\。”,这实际上是“\\”。表示为字符串文字时。 “\\”解析为文字“\”字符,因此正则表达式解析器被赋予“\。”,然后它解析为文字“。”。字符。
另请注意,stackoverflow解析器似乎想要取消以“\”开头的某些序列,这使得该帖子难以编辑。
答案 1 :(得分:4)
String address = "0.0.0.0";
String [] adr = address.split("\\.");
System.out.println(address);
System.out.println(adr[0]);
答案 2 :(得分:3)
“”。是正则表达式中的特殊字符,split的参数是正则表达式。逃避它。 (即“\\。”)。