TextBox文本“;替换“;函数工作不正常

本文关键字:工作 不正常 函数 替换 TextBox 文本 | 更新日期: 2023-09-27 18:21:52

我已经看过类似的问题,但没有帮助。

我正在使用windows窗体。我有按钮1和文本框1。

我正在尝试替换(或删除)textBox1中所选的文本,并输入新的字母(字母A)来代替它。

该代码适用于随机混合的数字和字母例如:

385F1选择8,然后结果=3A5F1(用A代替8)

H74S31B选择4S,结果=H7A31B

KQ5689选择Q5689,结果为KA

所以它工作得很好,但当我从由相同数字或字母组成的字符串中选择一个数字或字母时,它就不工作了,例如:

6667777222333选择任意7,则结果=666AAA222333(不是工作)

9992244GG选择任意9,则结果=AAA2244GG(不工作)

QQQHHUUU选择任意Q,则结果=AAAHHHUUU(不工作)

QQQHHUUU选择任何QH,则结果=QQAHHUUU(当选择不同的字母)

4433366选择333,则结果=44A66(当全部相同时有效选择数字)

希望我解释得好。我不知道是什么原因导致了这种行为。请帮忙。谢谢

public partial class Form1 : Form
{
    int TxTindex;
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        ActiveControl = textBox1;
        textBox1.Focus();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        textBox1.Focus();
        if (textBox1.SelectedText.Length > 0) // to check if any text selected
        {
            TxTindex = textBox1.SelectionStart; // save the caret position 
            textBox1.Text = textBox1.Text.Replace(textBox1.Text.Substring(textBox1.SelectionStart, textBox1.SelectionLength),"A");
            textBox1.SelectionStart = TxTindex + 1; // place the caret after the inserted string
        }
        else
        {
            return;
        }
    }
}

TextBox文本“;替换“;函数工作不正常

您的问题在这里:

textBox1.Text = textBox1.Text.Replace(textBox1.Text.Substring(textBox1.SelectionStart, textBox1.SelectionLength),"A");

Substring函数返回字符串。在您的示例中(6667777222333选择任意7,然后结果=666AAA222333(无效)),返回"7"。但是Text.Replace将替换所有出现的7。这不是你想要的。您可以使用string.Removestring.Insert ,而不是使用string.Replace函数

textBox1.Text = textBox1.Text.Remove(textBox1.SelectionStart, textBox1.SelectionLength).Insert(textBox1.SelectionStart, "A");

但对于大型字符串来说,这可能不是很有效。StringBuilder会更好。

问题是由string.Replace函数的使用引起的。

可以简单地完成您想要完成的任务

if (textBox1.SelectionLength > 0)
    textBox1.SelectedText = "A";

无需保存/设置选择开始。