为什么下面的代码不起作用?
string Tmp_actionFilepath = @"Temp\myaction.php";
// change the id and the secret code in the php file
File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true);
string ActionFileContent = File.ReadAllText(Tmp_actionFilepath);
string unique_user_id = textBox5.Text.Trim();
string secret_code = textBox1.Text.Trim();
ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
ActionFileContent.Replace("SECRET_CODE", secret_code);
File.WriteAllText(Tmp_actionFilepath, ActionFileContent);
以下是setting.php的内容
<?php
session_start();
$_SESSION["postedData"] = $_POST;
/////////////////////////////////////////////////////////
$_SESSION["uid"] = "UNIQUE_USER_ID";
$_SESSION["secret"] = "SECRET_CODE";
/////////////////////////////////////////////////////////
function findThis($get){
$d = '';
for($i = 0; $i < 30; $i++){
if(file_exists($d.$get)){
return $d;
}else{
$d.="../";
}
}
}
$rootDir = findThis("root.cmf");
require_once($rootDir."validate_insert.php");
上面的代码有什么问题?在c#中编译代码之后,我注意到创建了myaction.php文件,但是值:UNIQUE_USER_ID和SECRET_CODE没有改变,我还尝试复制/粘贴这些值以确保它们是相同的。但代码总是不起作用
答案 0 :(得分:5)
String.Replace
返回一个新字符串,因为字符串是不可变的。它不会替换您调用它的字符串。
你应该替换:
ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
ActionFileContent.Replace("SECRET_CODE", secret_code);
使用:
ActionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id);
ActionFileContent = ActionFileContent.Replace("SECRET_CODE", secret_code);
最重要的是,您应该更改变量名称,以便它们遵循常规的C#命名约定(即使用actionFileContent
而不是ActionFileContent
)。
答案 1 :(得分:2)
您必须在字符串上设置replace
字符串方法的结果。
string Tmp_actionFilepath = @"Temp\myaction.php";
// change the id and the secret code in the php file
File.Copy(@"Temp\settings.php", Tmp_actionFilepath, true);
string actionFileContent = File.ReadAllText(Tmp_actionFilepath);
string unique_user_id = textBox5.Text.Trim();
string secret_code = textBox1.Text.Trim();
// set the result of the Replace method on the string.
actionFileContent = ActionFileContent.Replace("UNIQUE_USER_ID", unique_user_id)
.Replace("SECRET_CODE", secret_code);
File.WriteAllText(Tmp_actionFilepath, actionFileContent);