删除字符串中位置的字符

时间:2013-11-30 19:27:42

标签: java string

目前我正在开发一个项目,该项目需要在字符串中的设定位置使用char。有一种简单的方法可以做到这一点吗?

6 个答案:

答案 0 :(得分:13)

使用StringBuilder,其方法为deleteCharAt()。然后,您可以使用stringBuilder.toString()来获取字符串。

编辑,这是一个例子:

public static void main(String[] args) {
    String string = "bla*h";
    StringBuilder sb = new StringBuilder(string);
    sb.deleteCharAt(3);
    // Prints out "blah"
    System.out.println(sb.toString());
}

答案 1 :(得分:4)

字符串不可变!但要完成任务,你可以

  1. 将字符串开头的子字符串复制到必须删除的字符
  2. 将子字符串从必须删除的字符复制到字符串的末尾。
  3. 将第二个字符串附加到第一个字符串。
  4. 例如,假设您必须删除第三个字符:

    String input = "Hello, World";
    String first = input.substring(0, 3);
    String second = input.substring(4);
    String result = first + second;
    

答案 2 :(得分:3)

您可以将字符串转换为StringBuilder,它具有方便的deletaCharAt方法。

String strWithoutChar = new StringBuilder(yourString).deleteCharAt(yourIndex).toString();

但请记住,这使您能够删除一些样板代码,但使用String#substring方法需要更多记忆。

答案 3 :(得分:1)

你这样做的方法是将oldstring复制到一个新闻字符串中,小心删除一个字符,如下所示:

String newString = oldString.substring(0, index) + oldString.substring(index+1);

请记住,如果您多次这样做,不断创建新字符串效率相当低。

答案 4 :(得分:0)

无论学者们在这里说什么,我同意他们的答案是正确的。但是如果你正在处理每个漏洞被放大的生产级程序,我建议你不要使用字符串的“子串”方法,因为:

(1)。 substring方法实际上为父垃圾收集器留下了未标记的字符串。由于这个垃圾收集器无法在其进程中清理它,堆空间被占用,并且未使用的父字符串仍然存在于堆空间中,即使它未被使用。

(2)。如果您处理许多字符串操作,例如这些操作,最终可能导致“Out of Heap Memory”异常,这在程序中的任何时间点都是不可取的。

使用char数组及其操作来实现您想要的效果:

public static void fn1()
{
 String a = "Stack Overflow";
 char[] b = a.toCharArray();
 j // index position of the character that you want to delete
 for(int i=j;i<b.length-1;i++)
 {
     b[i]=b[i+1];
 }
 b[b.length-1]='\000'; // '\000' is the null character

 System.out.println(new String(b));

}

答案 5 :(得分:0)

一种替代方法是使用substring方法,但使用concat代替+

@media only screen and (max-width: 768px)
.afaqahmad123 {
    margin-top: -73px;
}