Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-删除字符串的第一个字符_Java_String_Substring - Fatal编程技术网

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

Java-删除字符串的第一个字符,java,string,substring,Java,String,Substring,在Java中,我有一个字符串: Jamaica 我想删除字符串的第一个字符,然后返回amaica 如何执行此操作?使用参数为1的函数来获取从位置1(在第一个字符之后)到字符串末尾的子字符串(保留第二个参数,默认为字符串的全长) public String removeFirstChar(String s){ return s.substring(1); } 您可以使用String类的方法,该方法只获取起始索引,并返回以指定索引处的字符开头并延伸到字符串末尾的子字符串 String st

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

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

如何执行此操作?

使用参数为
1的函数来获取从位置1(在第一个字符之后)到字符串末尾的子字符串(保留第二个参数,默认为字符串的全长)

public String removeFirstChar(String s){
   return s.substring(1);
}
您可以使用
String
类的方法,该方法只获取起始索引,并返回以指定索引处的字符开头并延伸到字符串末尾的子字符串

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

在Java中要理解的关键是字符串是不可变的——您不能更改它们。所以说“从字符串中删除字符”毫无意义。相反,您只需要使用所需的字符创建一个新字符串。这个问题中的其他帖子为您提供了多种方法,但重要的是要理解这些方法不会以任何方式更改原始字符串。对旧字符串的任何引用都将继续引用旧字符串(除非将其更改为引用其他字符串),并且不会受新创建的字符串的影响

这对性能有许多影响。每次“修改”字符串时,实际上是在创建一个包含所有开销(内存分配和垃圾收集)的新字符串。因此,如果您想对字符串进行一系列修改,并且只关心最终结果(只要您“修改”中间字符串,它们就会失效),那么使用StringBuilder或StringBuffer可能更有意义。

在Java中,仅当前导字符是某个字符时,才删除它 在删除字符之前,使用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
Java,删除字符串中任意位置的字符的所有实例: Java,删除字符串中任意位置的字符的第一个实例: 使用
substring()
并给出要从前面修剪的字符数

String value = "Jamaica";
value = value.substring(1);
回答:“amaica”

方法返回一个新字符串,该字符串包含当前包含在此序列中的字符的子序列

子字符串从指定的
开始
,并延伸到
索引末尾-1的字符

它有两种形式。首先是

  • 字符串子字符串(int FirstIndex)
  • 在这里,FirstIndex指定子字符串的索引 开始。此表单返回开始于的子字符串的副本 FirstIndex并运行到调用字符串的末尾

  • 字符串子字符串(int-FirstIndex,int-endIndex)
  • 这里,FirstIndex指定开始索引,endIndex指定 停止点。返回的字符串包含所有字符 从开始索引到结束索引,但不包括

    例子 您可以这样做:

    String str = "Jamaica";
    str = str.substring(1, title.length());
    return str;
    
    或一般而言:
    我遇到了这样一种情况:我不仅要删除第一个字符(如果它是
    #
    ),还要删除第一组字符

    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}
    ()例如:

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

    删除前导字符的我的版本,一个或多个。例如,字符串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);
    }
    
    publicstaticstringremoveleadingchar(stringstr,charch){
    int-idx=0;
    而((idx
    ##科特林 #工作正常

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

    您只需使用
    substring()


    方法中的索引指示我们从何处获取结果字符串,在本例中,我们在第一个位置之后获取结果字符串,因为我们不希望在“牙买加”中使用“J”。

    如果要定义新函数,至少选择一个合适的名称,如
    removeFirst()
    .DRY:
    header=header.substring(header.startsWith(“#”)1:0);
    或带有正则表达式:
    header=header.replaceFirst(“^#“,”)
    重要的是要注意,这实际上并不会从字符串中删除字符——它会生成一个新字符串,该字符串包含除第一个字符外的所有旧字符串的字符。无法实际修改字符串。该链接似乎不再有效。请尝试以下链接:是的,如果要删除第一个n ch字符串变量的字符执行以下操作:variable=variable.substring(n);如果myString==“#”,则会出现问题,因为字符串在某个点将超出边界。要防止出现这种情况,可以执行(!myString.isEmpty()&&myString.charAt(0))
    String str = "Jamaica";
    str = str.substring(1, title.length());
    return str;
    
    public String removeFirstChar(String str){
       return str.substring(1, title.length());
    }
    
    while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
        myString = myString.substring(1, myString.length());
    }
    
    String str = "Jamaica";
    int nbr = 1;
    str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
    
     public static String removeLeadingChar(String str, char ch) {
        int idx = 0;
        while ((idx < str.length()) && (str.charAt(idx) == ch))
            idx++;
        return str.substring(idx);
    }
    
    tv.doOnTextChanged { text: CharSequence?, start, count, after ->
                val length = text.toString().length
                if (length==1 && text!!.startsWith(" ")) {
                    tv?.setText("")
                }
            }
    
    String myString = "Jamaica"
    String myStringWithoutJ = myString.substring(1)