【发布时间】:2011-05-29 01:37:33
【问题描述】:
在 Java 中,我有一个字符串:
Jamaica
我想删除字符串的第一个字符,然后返回amaica
我该怎么做?
【问题讨论】:
在 Java 中,我有一个字符串:
Jamaica
我想删除字符串的第一个字符,然后返回amaica
我该怎么做?
【问题讨论】:
使用带有1 参数的substring() 函数来获取从位置1(在第一个字符之后)到字符串末尾的子字符串(保留第二个参数默认为字符串的全长)。
"Jamaica".substring(1);
【讨论】:
public String removeFirstChar(String s){
return s.substring(1);
}
【讨论】:
removeFirst()。
使用substring() 并给出要从前面修剪的字符数。
String value = "Jamaica";
value = value.substring(1);
答案:“amaica”
【讨论】:
在移除角色之前,使用 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
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("^#","");
您可以使用String 类的substring 方法,该方法仅采用开始索引并返回以指定索引处的字符开头并延伸到字符串末尾的子字符串。
String str = "Jamaica";
str = str.substring(1);
【讨论】:
public String removeFirst(String input)
{
return input.substring(1);
}
【讨论】:
在 Java 中要理解的关键是字符串是不可变的——您无法更改它们。所以说“从字符串中删除一个字符”是没有意义的。相反,您只需使用您想要的字符创建一个新字符串。此问题中的其他帖子为您提供了多种方法,但重要的是要了解这些不会以任何方式更改原始字符串。您对旧字符串的任何引用都将继续引用旧字符串(除非您将它们更改为引用不同的字符串),并且不会受到新创建的字符串的影响。
这对性能有很多影响。每次“修改”字符串时,实际上都是在创建一个新字符串,其中隐含了所有开销(内存分配和垃圾收集)。因此,如果您想对字符串进行一系列修改并且只关心最终结果(中间字符串将在您“修改”它们时立即失效),使用 StringBuilder 或 StringBuffer 可能更有意义。
【讨论】:
你可以这样做:
String str = "Jamaica";
str = str.substring(1, title.length());
return str;
public String removeFirstChar(String str){
return str.substring(1, title.length());
}
【讨论】:
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
【讨论】:
我删除前导字符的版本,一个或多个。例如,String str1 = "01234",当删除前导 '0' 时,结果将是 "1234"。对于 String 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);
}
【讨论】:
您可以简单地使用substring()。
String myString = "Jamaica"
String myStringWithoutJ = myString.substring(1)
方法中的索引指示我们从哪里获取结果字符串,在这种情况下,我们在第一个位置之后获取它,因为我们不希望“Jamaica”中的“J”。
【讨论】:
##科特林 #它工作正常。
tv.doOnTextChanged { text: CharSequence?, start, count, after ->
val length = text.toString().length
if (length==1 && text!!.startsWith(" ")) {
tv?.setText("")
}
}
【讨论】: