Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#管柱更换,不工作_C#_String - Fatal编程技术网

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"