导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

C#下string.Remove和Replace()无效

迷路的指南针 南昌航空大学 2013-03-08 11:11:47
小菜今天自学C#然后对一个string类型的对象操作,一开始想删除开头的字母,然后将字符串中的某个字母替换掉,可是试过没有用,本菜初学,求大神指教,感激不尽。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tesing
{
class Program
{
static void Main(string[] args)
{
string test = "He+llo world!)";
string u;
u = test.Substring(0, 1);
test.Remove(1);
Console.WriteLine("剪切下来的字符串为{0},Test字符串的大小为{1}",u,test.Length);
int Cout;
char[] Signe = new char[] { '(', ')', '+', '-', '*', '/' };
test.Replace("!", "#");
Console.WriteLine("执行完Replace函数后的test:{0},它的长度{1}", test, test.Length);
Cout = test.IndexOfAny(Signe,0);
Console.WriteLine(Cout);
Console.ReadLine();
}
}
}

程序的运行结果是
...全文
591 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
豁燃开朗 2013-03-08
string是固定长度的,每次修改都要重新分配长度返回新实例的,原对象是不会修改,所以

string str1 = "abc";
string str2 = str1.Remove(1);//即str1="abc",str2="a";

string str="abcdefg";

str=str.remove(1);//返回新实例的,重新赋值
str=str.Replace("a","b");//返回新实例的,重新赋值
str=str.Trim();//所有方法都要重新赋值
回复
leafmao 2013-03-08
String.Sub和String.Replace方法都不修改当前实例,只会返回一个新的字符串 test.Remove(1);改成test=text.Remove(1); test.Replace("!", "#");改成test=test.Replace("!", "#");
回复
phommy 2013-03-08
test.Remove(1); => test = test.Remove(1); c#的系统类里,有些类的操作不改变自身,需要重新赋值,比如string,int 另一些是直接改变自身的,比如StringBuilder,List,不需要写成 l=l.Remove() 这些需要记住 当然你写int i = 0; i+1; 会直接编译错误。但你的test.Remove(1)连个警告都没有让我对编译器非常不爽
回复
你接把水煮完之后,要重新放回到容器中。 test = test.Remove(1);
回复
bdmh 2013-03-08
test = test.Remove(1);
回复
而外将程序的截图附上:
回复
感谢各位大神,按照你们的指点,搞好了。虽然大家都是正确答案,但是,我把分给了第1个找到错误和解释清楚的人,因为分数有限,所以只能这样分配,但是我对每位大神指点都是感激万分。
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.