C#管柱更换,不工作
我有一个字符串,我从中读取:C#管柱更换,不工作,c#,string,C#,String,我有一个字符串,我从中读取: TextReader tr = new StreamReader(this.dataPath ); string contents = tr.ReadToEnd(); 内容的价值始于: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n....." “\r\n…” 当我尝试执行 string styleSheet = "<?xml-stylesheet type=\"text/xs
TextReader tr = new StreamReader(this.dataPath );
string contents = tr.ReadToEnd();
内容的价值始于:
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n....."
“\r\n…”
当我尝试执行
string styleSheet = "<?xml-stylesheet type=\"text/xsl\" href=\"message.xsl\"?>";
string xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
TextReader tr = new StreamReader(this.dataPath );
string contents = tr.ReadToEnd();
contents.Replace(xmlString,xmlString + styleSheet );
string样式表=”“;
字符串xmlString=“”;
TextReader tr=新的StreamReader(this.dataPath);
字符串内容=tr.ReadToEnd();
contents.Replace(xmlString,xmlString+样式表);
它绝对找不到XmlString的第一次出现。知道为什么吗?试试看
contents = contents.Replace(xmlString,xmlString + styleSheet );
这是因为String类是不可变的。您可能希望执行以下操作:
string styleSheet = "<?xml-stylesheet type=\"text/xsl\" href=\"message.xsl\"?>";
string xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
TextReader tr = new StreamReader(this.dataPath );
string contents = tr.ReadToEnd();
string result = contents.Replace(xmlString,xmlString + styleSheet );
string样式表=”“;
字符串xmlString=“”;
TextReader tr=新的StreamReader(this.dataPath);
字符串内容=tr.ReadToEnd();
字符串结果=contents.Replace(xmlString,xmlString+样式表);
您当前没有捕获在最后一行执行的替换结果。replace()方法返回一个新的字符串对象,因此您必须将代码更改为:
content = contents.Replace(xmlString,xmlString + styleSheet );
System.String
是不可变的。诸如Replace
之类的操作将返回一个新字符串,而不是修改该字符串。如果您确实需要一个可变字符串,请使用System.Text.StringBuilder
,或者只需将Replace
调用的结果分配给一个变量。如果您正在搜索字符串,则可以获得技术性的(谁不喜欢呢?)`
<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n.....
\r\n。。。。。
搜索字符串必须是
"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n"
“\\r\\n”
或
@“\r\n”
这并不能真正回答您的问题,但已经回答了不止一次,所以请允许我将此放在一边
我见过很多情况,人们将流的内容读入字符串,这样就可以进行一些非常简单的操作。在许多情况下,当然在这种情况下,操作可以在不复制整个字符串的情况下执行
只需比现有代码多一点努力,就可以编写一个StreamStringReplace方法,该方法将输入流、输出流、查找字符串和替换字符串作为其参数。这将更加有效,尤其是当您的xml文档可能变得庞大时。这是.net中非常常见的逻辑问题。当我第一次开始的时候,它也感染了我。但我很高兴它是这样工作的。感谢JL没有发布“omg,string.Replace在.net中被破坏了!”如果Replace是一个静态方法而不是一个实例方法和/或Visual Studio会给你“返回值未被使用”警告,那就太好了。我一直都是这样做的。@Ed我仍然不时这样做:)
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"