在Java中,我有一个字符串:
Jamaica
我想删除字符串的第一个字符,然后返回amaica
我该怎么做?
答案 0 :(得分:298)
使用参数为1
的{{3}}函数从位置1(在第一个字符后)到字符串末尾(离开第二个字符串)获取子字符串参数out默认为字符串的全长。)
"Jamaica".substring(1);
答案 1 :(得分:58)
public String removeFirstChar(String s){
return s.substring(1);
}
答案 2 :(得分:51)
使用substring()
并指定要从前面修剪的字符数。
String value = "Jamaica";
value = value.substring(1);
答案:“amaica”
答案 3 :(得分:46)
使用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"
答案 4 :(得分:17)
您可以使用String
类的substring方法,该方法仅接受开始索引,并返回以指定索引处的字符开头并延伸到字符串末尾的子字符串。
String str = "Jamaica";
str = str.substring(1);
答案 5 :(得分:11)
在Java中要理解的关键是字符串是不可变的 - 你无法改变它们。因此,谈论'从字符串中删除字符'是没有意义的。而是使用您想要的字符创建一个新字符串。此问题中的其他帖子为您提供了各种方法,但重要的是要了解这些不会以任何方式更改原始字符串。您对旧字符串的任何引用将继续引用旧字符串(除非您将它们更改为引用不同的字符串),并且不会受到新创建的字符串的影响。
这对性能有很多影响。每次“修改”字符串时,实际上都是在创建一个新的字符串,其中隐含了所有开销(内存分配和垃圾回收)。因此,如果您想对字符串进行一系列修改并且只关心最终结果(一旦您修改它们,中间字符串将会死亡),使用StringBuilder或StringBuffer可能更有意义。
答案 6 :(得分:9)
public String removeFirst(String input)
{
return input.substring(1);
}
答案 7 :(得分:9)
String str="Jamaica";
str=str.substring(1, title.length());
return str;
public String removeFirstChar(String str){
return str.substring(1, title.length());
}
答案 8 :(得分:8)
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'
答案 9 :(得分:4)
我遇到的情况是,我不仅要删除第一个字符(如果它是if (readMap != null && !readMap.isEmpty()) { // Swap the order, can't check empty if it's null.
isWritten = true;
isDeviceSideEnabled();
Platform.runLater(() -> {
editDeviceContents.setDisable(false);
vehicleId.setText(readMap.get(0));
vehicleName.setText(readMap.get(1));
deviceType.setText(readMap.get(2));
offboardBroker1.setText(readMap.get(3));
offboardBroker2.setText(readMap.get(4));
postfixQueue.setText(readMap.get(5));
pKIServer.setText(readMap.get(6));
lContentsSerialNo.setText(readMap.get(7));
});
}
,还要删除第一个字符。
#
可能是起点,但我只想保留String myString = ###Hello World
。这可以按照以下方式完成。
Hello World
对于OP的情况,将while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
myString = myString.substring(1, myString.length());
}
替换为while
,它也能正常工作。
答案 10 :(得分:2)
另一种解决方案是,您可以使用replaceAll
使用某些正则表达式^.{1}
(regex demo)来解决您的问题,例如:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
答案 11 :(得分:1)
我删除主要字符的版本,一个或多个。例如,String str1 =&#34; 01234&#34;,当删除前导&#39;&#39;时,结果将是&#34; 1234&#34;。对于字符串str2 =&#34; 000123&#34;结果将是&#34; 123&#34;。对于String str3 =&#34; 000&#34;结果将为空字符串:&#34;&#34;。将数字字符串转换为数字时,此类功能通常很有用。与正则表达式(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);
}
答案 12 :(得分:1)
您可以简单地使用 substring()
。
String myString = "Jamaica"
String myStringWithoutJ = myString.substring(1)
方法中的索引指示我们从哪里获取结果字符串,在这种情况下,我们在第一个位置之后获取它,因为我们不希望“Jamaica”中的“J”。
答案 13 :(得分:0)
##科特林 #它工作正常。
tv.doOnTextChanged { text: CharSequence?, start, count, after ->
val length = text.toString().length
if (length==1 && text!!.startsWith(" ")) {
tv?.setText("")
}
}