Answers:
使用substring()
参数为的函数1
将子字符串从位置1(在第一个字符之后)到字符串的末尾(第二个参数保留为默认值,则为字符串的完整长度)。
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
。
使用substring()
并给出要从前面修剪的字符数。
String value = "Jamaica";
value = value.substring(1);
答:“ amaica”
使用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
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
用Java理解的关键是字符串是不可变的-您无法更改它们。因此,谈论“从字符串中删除字符”毫无意义。取而代之的是,仅使用所需字符创建一个NEW字符串。该问题中的其他文章为您提供了多种实现方法,但重要的是要了解这些方法不会以任何方式更改原始字符串。您对旧字符串的所有引用将继续引用旧字符串(除非您将其更改为引用其他字符串),并且不会受到新创建的字符串的影响。
这对性能有许多影响。每次“修改”字符串时,实际上都是在隐含所有开销(内存分配和垃圾回收)的情况下创建一个新的字符串。因此,如果您想对字符串进行一系列修改,而只关心最终结果(一旦“修改”中间字符串,它们就会死掉),那么改用StringBuilder或StringBuffer可能更有意义。
SUBSTRING()方法返回一个包含一个新的字符串序列当前包含在该序列的字符。
子字符串从指定的字符串开始,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'
我遇到了一种情况,我不仅要删除第一个字符(如果是#
,还要删除第一个字符)。
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的情况,请替换while
为if
,它同样适用。
另一个解决方案,您可以使用replaceAll
某些正则表达式^.{1}
(regex demo)解决问题,例如:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
我删除主要字符(一个或多个)的版本。例如,字符串str1 =“ 01234”,当删除开头的'0'时,结果将为“ 1234”。对于字符串str2 =“ 000123”,结果将再次为“ 123”。对于String str3 =“ 000”,结果将为空字符串:“”。这种功能通常在将数字字符串转换为数字时很有用。与正则表达式(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);
}