string str1 = :"class1=7&class2=52&info[adn]=TextBox1.Text&info[abst]=TextBox2.Text&info[touch]=TextBox3.Text&info[region][01]=01&agree=1";string str2 = str1.replace("TextBox","\" + TextBox1.Text").replace("Text&","Text + \"&");或者用正则表达式来替换
解决方案 »
- 忍不住要问了,100分,WebBrowser操控页面2个问题。
- 正则表达式怎么截取一个字符串中的子串
- c# winform 控件数组使用array.sort根据控件名如何排序
- TextBox 读串口数据显示时闪烁
- c#中datagrid的自定义绑定问题100分求助
- 谁能提供ado.net 2.0编写的sqlhelper 谢谢
- winfrom中TabControl 里选项卡宽度问题
- 高高兴兴损失1000多分,并降级,问个问题,哈哈~~
- 怎样判断某一个子类的实例,而不是另外一些子类的实例?
- 有关水晶报表中table的ApplyLogOnInfo方法的一个简单问题
- 如何用循环出来后的字符串作比较?新手在等!(不敢下班)
- richTextBox怎样读取.xml文件
Regex r = new Regex("(TextBox)[0-9]+");
MatchCollection mc = r.Matches(str);
for (int i = 0; i < mc.Count; i++) {
Match m = mc[i];
if (m.Success) {
String val = m.Value;
TextBox tb = (TextBox) FindControl(val);
if (tb != null) {
str = str.Replace(val + ".Text", tb.Text);
}
}
}
return str;
}
<%Response.Write(Replace("class1=7&class2=52&info[adn]=TextBox1.Text&info[abst]=TextBox2.Text&info[touch]=TextBox3.Text&info[region][01]=01&agree=1"));%>
要引用System.Text.RegularExpressions,System.ReflectionString Replace(String str){
Type t = GetType();
PropertyInfo text = typeof(TextBox).GetProperty("Text");
Regex r = new Regex("[=]\w+[.](Text)");
MatchCollection mc = r.Matches(str);
for (int i = 0; i < mc.Count; i++) {
Match m = mc[i];
if (m.Success) {
String val = m.Value;
if (val.Length > 6) {
String fieldname = val.Substring(1, val.Length - 6);
FieldInfo fi = t.GetField(fieldname, BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Public|BindingFlags.Static);
if (fi != null) {
String pvalue = text.GetValue(fi.GetValue(this), null);
if (pvalue != null) {
str = str.Replace(str, "=" + pvalue);
}
}
}
}
}
String Replace(String str)
{
Type t = GetType();
PropertyInfo text = typeof(TextBox).GetProperty("Text");
Regex r = new Regex("[=]\\w+[.](Text)");
MatchCollection mc = r.Matches(str);
for (int i = 0; i < mc.Count; i++)
{
Match m = mc[i];
if (!m.Success) continue;
String val = m.Value;
if (val.Length <= 6) continue;
String fieldname = val.Substring(1, val.Length - 6);
FieldInfo fi = t.GetField(fieldname, BindingFlags.NonPublic
|BindingFlags.Instance|BindingFlags.Public
|BindingFlags.Static|BindingFlags.IgnoreCase);
if (fi == null) continue;
String pvalue = (String) text.GetValue(fi.GetValue(this), null);
if (pvalue != null)
{
str = str.Replace(val, "=" + pvalue);
}
}
return str;
}
经过测试完全可以。
PropertyInfo text = typeof(Control).GetProperty("Text");
这句有问题,提示:“Control”是不明确的引用
换成TextBox 也不行。