我想在c#中的新类中创建一个字符串构建器,因为我有许多要替换的字符串(超过7,000个)。以相同的形式执行可能会出现加载问题所以我想创建一个新类,我可以编写字符串生成器代码,但无法执行。我试过下面的代码
class v
{
StringBuilder _sb = new StringBuilder();
public v(StringBuilder sb)
{
sb.Replace("s", "A");
sb.Replace("hi", "hello");
}
}
我的按钮代码:
StringBuilder _sb = new StringBuilder(c1Editor1.Text);
_sb.v(C1Editor.text);
答案 0 :(得分:2)
class v
{
StringBuilder _sb;
public v(StringBuilder sb)
{
_sb = sb;
sb.Replace("s", "A");
sb.Replace("hi", "hello");
}
}
然后:
StringBuilder _sb = new StringBuilder(c1Editor1.Text);
v _v = new v(_sb);
并不是说我必须认为这是一个很好的代码,但这会实现你想要做的事情。
答案 1 :(得分:1)
如果你想改变你自己的stringbuiler文本,那么这个怎么样?
1.Create StringBuilder Handler
public static class StringHelper
{
public static void v(this StringBuilder sb)
{
sb.Replace("s", "A");
sb.Replace("hi", "hello");
}
}
2.代码中的用户处理程序类
StringBuilder sb = new StringBuilder(c1Editor1.Text);
sb.v();
答案 2 :(得分:0)
这是你如何做到的。将代码粘贴到一个表单中,其中TextBox
名为textBox1
,Button
名为button1
,BackgroundWorker
名为backgroundWorker1
:
private void button1_Click(object sender, EventArgs e)
{
// instead of changing the cursor you could disable the textbox
this.UseWaitCursor = true;
backgroundWorker1.DoWork += Replacer;
backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;
backgroundWorker1.RunWorkerAsync(textBox1.Text);
}
private void Replacer(object sender, DoWorkEventArgs doWorkEventArgs)
{
var replacer = new StringBuilder((String)doWorkEventArgs.Argument);
replacer.Replace("s", "A");
replacer.Replace("hi", "hello");
// add other 6998 replacements here and remove the sleep of course
Thread.Sleep(5000);
doWorkEventArgs.Result = replacer.ToString();
}
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
textBox1.Text = (string) e.Result;
// instead of changing the cursor you could enable the textbox here
this.UseWaitCursor = false;
}
祝你好运。