这是我要更改的aspx文件中的文本行
<center><body link=blue vlink=purple class=xl65 onload="processData();"><form id="mainform"
action="http://localhost/XLEZ/DataHandler/Submit.aspx" method="post" enctype="multipart/form-
data"><input type="hidden" id="hid_extra" name="hid_extra"
value="Machine_Inspection_20140807162226.xlsx||Machine_Inspection||Excavator
Inspection||Excavator Inspection|Forklift Inspection|Tractor Inspection"/>
我的代码找到了这一行,我想更改此行中的表单操作,
这是我的代码,它基本上改变了整行,但我只想更改特定的文本
String Form_action ="http://\" + Request.Url.Authority+\"/XLEZ/DataHandler/Submit.aspx\"";
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("form id=\"mainform\""))
{
index = count;
}
count++;
}
sr.Dispose();
}
if (index != 0)
{
var lines = File.ReadAllLines(selected_path);
lines[index] = Form_action ;
File.WriteAllLines(selected_path, lines);
}
但是这会用动作替换整行,我只想更改此行中的动作
答案 0 :(得分:1)
在您的代码中,这行代码显然取代了整行HTML代码:
lines[index] = Form_action ;
您需要替换此行中的部分字符串。您可以执行以下操作:
String Form_action ="http://\" + Request.Url.Authority+\"/XLEZ/DataHandler/Submit.aspx\"";
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("form id=\"mainform\""))
{
index = count;
}
count++;
}
sr.Dispose();
}
if (index != 0)
{
var lines = File.ReadAllLines(selected_path);
int start = lines[index].IndexOf("action");
string newLine = lines[index].Substring(0, start + 8) + Form_action + " " + lines[index].Substring(lines[index].IndexOf("method"));
lines[index] = newLine;
File.WriteAllLines(selected_path, lines);
}
你的&#34; Form_Action&#34;变量不会保持正确的值,因为你逃脱了&#34;在使用Request对象之前。你应该看看这个。
调整后的表格 - 行动创作:
String Form_action ="http://" + Request.Url.Authority + "/XLEZ/DataHandler/Submit.aspx\"";
答案 1 :(得分:1)
您可以使用正则表达式以更简单的方式执行此操作:
Regex regex = new Regex(".*form id=\"mainform\".* action=\"(.+?)\" .*");
var lines = File.ReadAllLines(selected_path);
foreach (string line in lines)
{
Match match = regex.Match(line);
if (match.Success)
{
string toReplace = match.Groups[1].Value;
lines[count] = lines[count].Replace(toReplace, Form_action);
}
count++;
}
File.WriteAllLines(selected_path, lines);