java - 如何在 android 中解决 StringIndexOutOfBoundsException

标签 java android indexoutofboundsexception

这是我的 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)

我认为问题出在这个函数中:

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;
}

最佳答案

您确定 phoneNumber 不等于 "" 吗? 您必须检查 phoneNumber 的字符数是否多于 csCountryCode.length()

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

关于java - 如何在 android 中解决 StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22955414/

相关文章:

java - EJB3 与 Spring

android - Dropbox Sync API Android - 更新缓存文件

java - 无法发送包含某些字符的名称的 key

java - Spring Data JPA 到深入而奇怪的映射

java - 线程java编程错误中的异常

android ICS : service restart hang on intent. getExtras()

java - 异常ArrayIndexOutOfBoundsException错误

java - 如何只用一个循环和一个内循环打印给定的图案?而不是使用 4 个循环

java - Spark : Cogroup RDDs fails in case of huge group

java - Android 6.0 以上版本无法通过广播接收器获取通知