-4

我得到一个字符串值

String A = KS!BACJ
String B = KS!KLO
String C = KS!MHJU
String D = KS!GHHHY

是否可以删除KS!来自字符串,所以它看起来只像 BACJ

public class Main {
    public static void main(String args[])  {
     String A = "KS!BACJ";
     if(A.startsWith("KS!"))
     {
     }
    }
}
4

5 回答 5

5

尝试String a = A.substring(3);

于 2012-12-09T08:15:09.083 回答
2

您可以使用String#substring(int idx).

在您的情况下yourString.substring(3),它将返回一个没有前三个字符的字符串,例如:

String newString = yourString.substring(3);

注意:我们不能“从字符串中删除前三个字符”(至少不容易),因为String它是不可变的- 但我们可以创建一个没有前 3 个字符的新字符串。


奖金:

要“从字符串中删除第一个字符” - 您将需要努力工作并使用反射。
不建议使用,仅用于教育目的!

String A = "KS!BACJ";
Field offset = A.getClass().getDeclaredField("offset");
offset.setAccessible(true);
offset.set(A, (Integer)offset.get(A) + 3);
Field count = A.getClass().getDeclaredField("count");
count.setAccessible(true);
count.set(A, A.length()-3);
System.out.println(A);
于 2012-12-09T08:15:06.147 回答
2

试试这个。

String.substring(String.indexOf("!")+1 , String.length());
于 2012-12-09T08:16:07.497 回答
2

使用 Apache 通用语言StringUtils

String aString = "KS!BACJ";
String bString = StringUtils.removeStart("KS!");
于 2012-12-09T08:20:22.180 回答
1

请改用 StringBuilder。它不会生成新String对象。它只是从给定的字符串中删除前 3 个或更多字母。

String st = "HELLO";
StringBuilder str = new StringBuilder(st);
str.delete(0, 3);
Log.d("str", str.toString());

输出:

于 2017-04-11T10:40:51.710 回答