删除字符串的第一个字符

qkf9rpyu  于 2021-07-14  发布在  Java
关注(0)|答案(13)|浏览(524)

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

Jamaica

我想删除字符串的第一个字符,然后返回 amaica 我该怎么做?

pbgvytdp

pbgvytdp1#

使用 substring() 参数为的函数 1 从位置1(在第一个字符之后)到字符串结尾的子字符串(保留第二个参数默认为字符串的完整长度)。

"Jamaica".substring(1);
r3i60tvu

r3i60tvu2#

public String removeFirstChar(String s){
   return s.substring(1);
}
wi3ka0sx

wi3ka0sx3#

使用 substring() 并给出要从前面修剪的字符数。

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

回答:“amaica”

b91juud3

b91juud34#

在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);

印刷品:

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"
5lwkijsr

5lwkijsr5#

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

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

y1aodyip6#

public String removeFirst(String input)
{
    return input.substring(1);
}
unftdfkk

unftdfkk7#

在java中要理解的关键是字符串是不可变的——您不能更改它们。所以说“从字符串中删除字符”是没有意义的。相反,您只需要使用所需的字符创建一个新字符串。这个问题中的其他帖子提供了各种方法,但重要的是要理解这些方法不会以任何方式更改原始字符串。对旧字符串的任何引用都将继续引用旧字符串(除非将它们更改为引用其他字符串),并且不会受新创建的字符串的影响。
这对性能有很多影响。每次“修改”字符串时,实际上都是在创建一个包含所有开销(内存分配和垃圾回收)的新字符串。因此,如果您想对字符串进行一系列修改,并且只关心最终结果(只要您“修改”中间字符串,中间字符串就会失效),那么使用stringbuilder或stringbuffer可能更有意义。

btqmn9zl

btqmn9zl8#

你可以这样做:

String str = "Jamaica";
str = str.substring(1, title.length());
return str;

或者一般来说:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}
xt0899hw

xt0899hw9#

方法返回一个新字符串,该字符串包含当前包含在此序列中的字符的子序列。
子字符串从指定的 start 并延伸到 index end - 1 .
它有两种形式。首先是 String substring(int FirstIndex) 这里,firstindex指定子字符串开始的索引。此窗体返回从firstindex开始并运行到调用字符串结尾的子字符串的副本。 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'
brgchamk

brgchamk10#

我遇到了这样一种情况,我不仅要删除第一个字符(如果它是一个 # ,但第一组字符。 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());
}

对于op的情况,替换 whileif 而且也很有效。

f0ofjuux

f0ofjuux11#

另一个解决方案,您可以使用 replaceAll 用一些正则表达式 ^.{1} (regex demo)例如:

String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
zzlelutf

zzlelutf12#

删除前导字符的我的版本,一个或多个。例如,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);
}
4c8rllxm

4c8rllxm13#

Kotlin工作得很好。

tv.doOnTextChanged { text: CharSequence?, start, count, after ->
            val length = text.toString().length
            if (length==1 && text!!.startsWith(" ")) {
                tv?.setText("")
            }
        }

相关问题