目前我正在开发一个项目,该项目需要在字符串中的设定位置使用char。有一种简单的方法可以做到这一点吗?
答案 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)
字符串不可变!但要完成任务,你可以
例如,假设您必须删除第三个字符:
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;
}