黑马程序员技术交流社区
标题:
关于string类型的修改问题
[打印本页]
作者:
宋健
时间:
2013-3-11 21:53
标题:
关于string类型的修改问题
string类型为char类型的只读数组,请问如果我想修改string某一位该怎么做?
如string str="abcdefg",如果要将c改为h,如果不想给字符串重新赋值(产生内存垃圾),
该怎么做啊?
作者:
wjs5943283
时间:
2013-3-11 21:57
string 本来就是不可变的 改变都会有内存垃圾 你可以stringbuilder
作者:
luxun1912
时间:
2013-3-11 22:09
String可以看做是char类型的一个只读数组,只能取值,不能更改它的值。
要想改变字符串中的某一个元素,除了给这个字符串重新赋值之外,另一种方法就是将这个字符串转换成char类型的数组,
通过遍历char类型的这个数组,对其进行改变。
将字符串转换成char数组 用 ToCharArray()这个方法。
也可以尝试使用stringBuilder
作者:
熊薇
时间:
2013-3-13 09:23
可以使用ToCharAarry()方法,得到一个字符数组,修改这个数组的值,再重新构造一个字符串
string input="Hello";
char[] chars=input.ToCharArray();
chars[0]='E';
input=new string(chars); //调用string的构造方法,生成一个字符串,此时input为Eello
复制代码
需要指出的是,由于string是引用类型,所以“Hello”仍然存在,
作者:
黑马-蒋振军
时间:
2013-3-13 13:03
class stringDemo
{
public static void main(String[] args)
{
String str="abcdefg";
char[] ch=str.toCharArray();
for(int i=0;i<ch.length;i++)
{
if(ch[i]=='c')
{
ch[i]='h';
}
System.out.println(ch[i]);
}
}
}
复制代码
还有楼上的方法名写错了,是toCharArray().
作者:
曾玉锋
时间:
2013-3-13 14:23
String类的不可变性:一旦在内存空间分配一块内存空间存储字符串,则该空间就固定了,不可对该内存空间进行修改。至于内存垃圾,可以重新给string 变量=新值,然后调用GC.Collect() 回收内存垃圾
作者:
秦二江
时间:
2013-3-14 18:19
//用新字符串接收
string tr = "abcdefg";
char[] ch = tr.ToCharArray();
string s = null;
for (int i = 0; i < ch.Length; i++)
{
if (ch[i] == 'c')
{
ch[i] = 'h';
}
s+=ch[i];
}
Console.WriteLine(s);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2