如何解决Android中的StringIndexOutOfBoundsException

这是我的logcat报告:

java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2 at java.lang.String.startEndAndLength(String.java:583) at java.lang.String.substring(String.java:1464) at com.buzzador.profile.getValidPhoneNumber(profile.java:1966) at com.buzzador.profile.setDataForServer(profile.java:1717) at com.buzzador.profile$5.onClick(profile.java:236) at android.view.View.performClick(View.java:4377) at android.view.View$PerformClick.run(View.java:18044) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5306) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method) 

我认为这个问题是在这个function:

 public String getValidPhoneNumber (String phoneNumber, String country) { String csValidPhoneNumber = ""; phoneNumber = getPhoneNumberWithoutReqularExpresions(phoneNumber); phoneNumber = phoneNumber.replaceFirst ("^0*", ""); String csCountryCode = getCountryCode(country); String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()); if(csAppendedCode.equals(csCountryCode)) { csValidPhoneNumber = "+" + phoneNumber; return csValidPhoneNumber; } csValidPhoneNumber = "+" + csCountryCode + phoneNumber; return csValidPhoneNumber; } 

Solutions Collecting From Web of "如何解决Android中的StringIndexOutOfBoundsException"

你确定phoneNumber不等于"" ? 你必须检查phoneNumbercsCountryCode.length()有更多的字符。

 String csAppendedCode = phoneNumber.length() > csCountryCode.length() ? phoneNumber.substring(0, csCountryCode.length()) : ""; 

一个String的最后一个索引是string.length()-1但你试图访问索引与string.length()不存在,这就是为什么你得到这个exception…

 java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2 

现在,你应该改变这一行…

 String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()); 

这个…

 String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()-1);