如何从String中删除单个字符

Vik*_*ram 116 java string

为了访问Java中String的单个字符,我们有String.charAt(2).是否有任何内置函数可以删除java中字符串的单个字符?

像这样的东西:

if(String.charAt(1) == String.charAt(2){
   //I want to remove the individual character at index 2. 
}
Run Code Online (Sandbox Code Playgroud)

Bhe*_*ung 211

您也可以使用StringBuilder可变的类.

StringBuilder sb = new StringBuilder(inputString);
Run Code Online (Sandbox Code Playgroud)

它有这个方法deleteCharAt(),以及许多其他的mutator方法.

只需删除需要删除的字符,然后按如下方式获得结果:

String resultString = sb.toString();
Run Code Online (Sandbox Code Playgroud)

这可以避免创建不必要的字符串对象.


atk*_*sch 65

一种可能性:

String result = str.substring(0, index) + str.substring(index+1);
Run Code Online (Sandbox Code Playgroud)

请注意,结果是一个新的String(以及两个中间String对象),因为Java中的Strings是不可变的.


Thu*_*huy 48

您可以使用名为replace的Java String方法,它将使用第二个参数替换与第一个参数匹配的所有字符:

String a = "Cool";
a = a.replace("o","");
Run Code Online (Sandbox Code Playgroud)

  • 它没有回答如何通过 *index* 删除的问题。 (18认同)

Ósc*_*pez 13

不,因为Java中的字符串是不可变的.你必须创建一个新的字符串来删除你不想要的字符.

要替换string c中索引位置的单个char ,请执行以下操作,并记住将创建一个新字符串:idxstr

String newstr = str.substring(0, idx) + str.substring(idx + 1);
Run Code Online (Sandbox Code Playgroud)

  • 您的答案现在完全不同,您首先将"replaceAll()"替换为"replace()",然后将"replace()"替换为"substring()".现在,它是atkretsch的逐字副本,可以快速而正确地回答这个问题.你的答案不会增加任何东西.请把它取下来. (5认同)

Yas*_*ash 13

String str = "M1y java8 Progr5am";
Run Code Online (Sandbox Code Playgroud)

deleteCharAt()

StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
    build.deleteCharAt(1);  // Shift the positions front.
    build.deleteCharAt(8-1);
    build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);
Run Code Online (Sandbox Code Playgroud)

更换()

StringBuffer buffer = new StringBuffer(str);
    buffer.replace(1, 2, ""); // Shift the positions front.
    buffer.replace(7, 8, "");
    buffer.replace(13, 14, "");
System.out.println("Buffer : "+buffer);
Run Code Online (Sandbox Code Playgroud)

炭[]

char[] c = str.toCharArray();
String new_Str = "";
    for (int i = 0; i < c.length; i++) {
        if (!(i == 1 || i == 8 || i == 15)) 
            new_Str += c[i];
    }
System.out.println("Char Array : "+new_Str);
Run Code Online (Sandbox Code Playgroud)


小智 9

要修改字符串,请阅读 StringBuilder,因为除了不可变字符串之外,它是可变的。可以在这里找到不同的操作https://docs.oracle.com/javase/tutorial/java/data/buffers.html。下面的代码片段创建一个 StringBuilder,然后附加给定的字符串,然后从字符串中删除第一个字符,然后将其从 StringBuilder 转换回字符串。

StringBuilder sb = new StringBuilder();

sb.append(str);
sb.deleteCharAt(0);
str = sb.toString();
Run Code Online (Sandbox Code Playgroud)


आनं*_*नंद 8

请考虑以下代码:

public String removeChar(String str, Integer n) {
    String front = str.substring(0, n);
    String back = str.substring(n+1, str.length());
    return front + back;
}
Run Code Online (Sandbox Code Playgroud)