在Java中,我有一个字符串:

Jamaica

我想删除字符串的第一个字符,然后返回amaica

我该怎么做呢?


当前回答

我的版本删除前导字符,一个或多个。例如,String str1 = "01234",当去掉前导'0'时,结果将是"1234"。对于字符串str2 = "000123",结果仍然是"123"。对于字符串str3 = "000",结果将是空字符串:""。在将数值字符串转换为数字时,这种功能通常很有用。与regex (replaceAll(…))相比,该解决方案的优点是速度要快得多。这在处理大量字符串时非常重要。

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}

其他回答

我的版本删除前导字符,一个或多个。例如,String str1 = "01234",当去掉前导'0'时,结果将是"1234"。对于字符串str2 = "000123",结果仍然是"123"。对于字符串str3 = "000",结果将是空字符串:""。在将数值字符串转换为数字时,这种功能通常很有用。与regex (replaceAll(…))相比,该解决方案的优点是速度要快得多。这在处理大量字符串时非常重要。

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}
public String removeFirstChar(String s){
   return s.substring(1);
}

在Java中,只有当前导字符是某个特定字符时才删除前导字符

在删除字符之前,使用Java三元运算符快速检查字符是否存在。只有当前导字符存在时才删除它,如果传递一个空白字符串,则返回空白字符串。

String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

打印:

blankstring
foobar
moobar

Java,删除字符串中任意位置的所有字符实例:

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"

Java,删除字符串中任意位置的字符的第一个实例:

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"

您可以简单地使用substring()。

String myString = "Jamaica"
String myStringWithoutJ = myString.substring(1)

方法中的索引指示了我们从哪里获取结果字符串,在这种情况下,我们在第一个位置之后获得它,因为我们不希望“牙买加”中的“J”。

可以使用String类的substring方法,该方法只接受开头索引,并返回以指定索引处的字符开始并扩展到字符串末尾的子字符串。

String str = "Jamaica";
str = str.substring(1);