【问题标题】:Remove all characters except last n characters from a string从字符串中删除除最后 n 个字符之外的所有字符
【发布时间】:2014-11-08 21:38:10
【问题描述】:

我正在尝试删除除最后 10 个字符之外的所有文本,但在 android 中出现错误

 09-15 16:22:58.146: E/AndroidRuntime(13630): java.lang.StringIndexOutOfBoundsException: length=228; index=263

但是当我在单独的课程中尝试它时,它正在使用 java。 这是我试过的?任何人都可以告诉我关于 android 中的子字符串是否有任何问题?

String allchar = 
"PJGOGROG fnkmslkjsfsdmnsgdnklnsgklsgknlgrf jkghijgdlkjkgjdfkjgf kjlgdfkjlfdgfjklklj
kljfdkjlfkjldfdkjslkljdfskjlfsjkldfsjklkljs
fdsjklsdfkljsfdkljkhgfhhgdfsgkhdfskghfdskghfdsghsfdghafevbhfsvgydcgubcdmgycdgfehkhfeghjgh68
Alias12345";

    String  number = "";
    String reqtext = allchar.replaceAll("\\s+","");
    number = reqtext.substring(reqtext.length()-10 );
    System.out.println(number);

【问题讨论】:

  • 我在 java 上试过你的代码,而不是 android & 它可以工作,打印 Alias12345
  • 我在 android 应用程序中尝试了您的代码,它显示 Alias12345 并在 java 中尝试它给出了相同的答案。
  • 好问题,可能取决于 Java 的版本
  • 对我来说很好用,您使用的是哪个版本的 java?
  • 是的,它也在 java 中给了我答案,但在 android 中抛出错误!!!

标签: java android indexing runtime-error substring


【解决方案1】:
    String allchar = "PJGOGROG fnkmslkjsfsdmnsgdnklnsgklsgknlgrf jkghijgdlkjkgjdfkjgf kjlgdfkjlfdgfjklkljkljfdkjlfkjldfdkjslkljdfskjlfsjkldfsjklkljsfdsjklsdfkljsfdkljkhgfhhgdfsgkhdfskghfdskghfdsghsfdghafevbhfsvgydcgubcdmgycdgfehkhfeghjgh68Alias12345";
String  number = "";
String reqtext = allchar.replaceAll("\\s+","");
number = reqtext.substring(reqtext.length()-10, reqtext.length());
System.out.println(number);

这段代码在 android 中对我来说很好用。

【讨论】:

  • 这也会抛出异常。
  • 它不会为我扔一个。你在为安卓使用 java 8 吗?
  • 它正在抛出异常。那么我应该更喜欢什么方式? @Maroun Maroun
【解决方案2】:

避免声明这么多变量,尝试使用:

number = allchar.substring(allchar.length()-10, allchar.length());

【讨论】:

  • OP 想要字符串的结尾,而不是开头
  • 是的 ryt :) @CocoNess
【解决方案3】:

如果substring()不起作用,你可以尝试手动操作:

String allchar = 
"PJGOGROG fnkmslkjsfsdmnsgdnklnsgklsgknlgrf jkghijgdlkjkgjdfkjgf kjlgdfkjlfdgfjklklj
kljfdkjlfkjldfdkjslkljdfskjlfsjkldfsjklkljs
fdsjklsdfkljsfdkljkhgfhhgdfsgkhdfskghfdskghfdsghsfdghafevbhfsvgydcgubcdmgycdgfehkhfeghjgh68
Alias12345";

    StringBuilder number = new StringBuilder();
    String reqtext = allchar.replaceAll("\\s+","");
    for(int i = reqtext.length()-10; i < reqtext.length(); i++)
    {
        number.append(reqtext.charAt(i));
    }
    System.out.println(number.toString());

【讨论】:

  • 我会试试这个@Zhuinden
猜你喜欢
  • 2019-07-05
  • 1970-01-01
  • 2011-05-11
  • 2011-06-23
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多