Java - 删除字符串的第一个字符

Cal*_*010 199 java string substring

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

Jamaica
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做?

mar*_*cog 312

使用substring()带有参数的函数1来获取从位置1(第一个字符之后)到字符串结尾的子字符串(保留第二个参数默认为字符串的整个长度).

"Jamaica".substring(1);
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要注意,这实际上并没有*从字符串中删除*字符 - 它为您提供了一个新字符串,其中包含除第一个字符串之外的旧字符串的所有字符.没有办法真正修改字符串. (18认同)

Ahm*_*otb 61

public String removeFirstChar(String s){
   return s.substring(1);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果要定义一个新函数,至少选择一个合适的名称,如`removeFirst()`. (12认同)

小智 53

使用substring()并提供要从前面修剪的字符数.

String value = "Jamaica";
value = value.substring(1);
Run Code Online (Sandbox Code Playgroud)

答案:"amaica"


Eri*_*ski 46

在Java中,仅当前导字符是特定字符时才删除它

在删除之前,使用Java三元运算符快速检查您的角色是否存在.只有在存在时才会删除前导字符,如果传递空字符串,则返回blankstring.

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);
Run Code Online (Sandbox Code Playgroud)

打印:

blankstring
foobar
moobar
Run Code Online (Sandbox Code Playgroud)

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

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
Run Code Online (Sandbox Code Playgroud)

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

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
Run Code Online (Sandbox Code Playgroud)

  • DRY:`header = header.substring(header.startsWith("#")?1:0);` (4认同)
  • 或者使用正则表达式:`header = header.replaceFirst("^#","");` (3认同)

cod*_*ict 18

您可以使用仅接受开始索引的类的子字符串方法,String并返回以指定索引处的字符开头并延伸到字符串末尾的子字符串.

String str = "Jamaica";
str = str.substring(1);
Run Code Online (Sandbox Code Playgroud)


Chr*_*odd 11

在Java中要理解的关键是字符串是不可变的 - 你无法改变它们.因此,谈论'从字符串中删除字符'是没有意义的.而是使用您想要的字符创建一个新字符串.此问题中的其他帖子为您提供了各种方法,但重要的是要了解这些不会以任何方式更改原始字符串.您对旧字符串的任何引用将继续引用旧字符串(除非您将它们更改为引用其他字符串),并且不会受新创建的字符串的影响.

这对性能有很多影响.每次"修改"字符串时,实际上都是在创建一个新的字符串,其中隐含了所有开销(内存分配和垃圾回收).因此,如果您想对字符串进行一系列修改并且只关心最终结果(一旦您修改它们,中间字符串将会死亡),使用StringBuilder或StringBuffer可能更有意义.


Ree*_*ore 10

public String removeFirst(String input)
{
    return input.substring(1);
}
Run Code Online (Sandbox Code Playgroud)


小智 9

你可以这样做:

String str="Jamaica";
str=str.substring(1, title.length());
return str;
Run Code Online (Sandbox Code Playgroud)

或者一般来说:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}
Run Code Online (Sandbox Code Playgroud)


Int*_*iya 8

子()方法返回一个包含一个新的字符串序列当前包含在该序列的字符.

所述开始在指定的start,并且延伸到在该字符index end - 1.

它有两种形式.首先是

  1. String substring(int FirstIndex)

这里,FirstIndex指定子字符串将开始的索引.此表单返回从FirstIndex开始并运行到调用字符串末尾的子字符串的副本.

  1. String substring(int FirstIndex, int endIndex)

这里,FirstIndex指定起始索引,endIndex指定停止点.返回的字符串包含起始索引中的所有字符,最多但不包括结束索引.

    String str="Amiyo";
   // prints substring from index 3
   System.out.println("substring is = " + str.substring(3)); // Output "yo'
Run Code Online (Sandbox Code Playgroud)


小智 7

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

String myString = "Jamaica"
String myStringWithoutJ = myString.substring(1)
Run Code Online (Sandbox Code Playgroud)

方法中的索引指示我们从哪里获取结果字符串,在本例中,我们在第一个位置之后获取它,因为我们不希望“Jamaica”中出现“J”。


Mat*_*ers 5

我遇到了一种情况,我不仅要删除第一个字符(如果它是#,还要删除第一组字符。

String myString = ###Hello World可能是起点,但我只想保留Hello World. 这可以按如下方式完成。

while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
    myString = myString.substring(1, myString.length());
}
Run Code Online (Sandbox Code Playgroud)

对于 OP 的情况,替换whileif并且它也可以工作。