如何将一个字符串与另一个字符串

时间:2016-06-19 19:06:17

标签: c# string variables compare

我正在开发这个项目,当我将某些内容保存到剪贴板时,它将其存储在文本框中,然后等待我保存其他内容然后将该值存储在文本框中以及...

它工作得很好但我想让它变得更好,因为我目前有一个定时器作为循环来检查当前值是否已被使用(参见下面的代码)

我想将其更改为我可以将变量与字符串进行比较的地方,但我真的不知道该怎么做。

我试过了..但我也不知道该怎么比较它所以我无法继续前进。 var containsData = Clipboard.GetText();

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CBR
{
    public partial class mainFrm : Form
    {
        public mainFrm()
        {
            InitializeComponent();
        }



        private void mainFrm_Load(object sender, EventArgs e)
        {
        }



        #region ButtonsAndTimer
        private void clipboardUpdater_Tick(object sender, EventArgs e)
        {
            if (!clipboardSaveTextBox.Text.Contains(Clipboard.GetText()))
            {
                clipboardSaveTextBox.Text += "\n" + Clipboard.GetText();
            }
        }


        private void monitorButton_Click(object sender, EventArgs e)
        {
            clipboardUpdater.Enabled = true;
        }

        private void stopMonitorButton_Click(object sender, EventArgs e)
        {
            clipboardUpdater.Enabled = false;
        }
        #endregion
    }
}

3 个答案:

答案 0 :(得分:0)

鉴于您的实际代码,我认为您不希望通过字符串比较进行字符串,但您希望在文本框中包含唯一的字符串。如果是这种情况,那么您可以考虑另一种方式来存储字符串而不仅仅是TextBox,并且每次验证TextBox是否包含已添加到控件文本的字符串。

根据MSDN的提供,有一个名为HashSet<T>的类

  

HashSet类提供高性能的集合操作。一套   是一个不包含重复元素的集合,其中包含   元素没有特别的顺序。

因此,您可以检查文本框中是否存在通过剪贴板传递的字符串,而不是检查它是否存在于HashSet<string>实例中

public partial class mainFrm : Form
{
    private HashSet<string> uniqueTexts = new HashSet<string>();
    public mainFrm()
    {
        InitializeComponent();
    }

    .....

    private void clipboardUpdater_Tick(object sender, EventArgs e)
    {
        string clipText = Clipboard.GetText();
        if (!uniqueTexts.Any(x => x.Equals(clipText, StringComparison.OrdinalIgnoreCase)))
        {
            clipboardSaveTextBox.AppendText("\n" + clipText);
            uniqueTexts.Add(clipText);
        }
    }

答案 1 :(得分:0)

如果要使用不区分大小写的比较,可以在调用Contains方法之前在两个字符串中添加ToLower:

 if (!clipboardSaveTextBox.Text.ToLower().Contains(Clipboard.GetText().ToLower()))
            {
                clipboardSaveTextBox.Text += "\n" + Clipboard.GetText();
            }

答案 2 :(得分:0)

对我有用的是......

我创建了一个计时器,Is和滴答间隔为0.5秒,所以它可以每0.5秒重复一次监视过程,我可以把它放到0.1秒但我不想让它变重。

然后我将其添加到方法中。

    private void clipboardUpdater_Tick(object sender, EventArgs e)
    {
        if (!clipboardSaveTextBox.Text.Contains(Clipboard.GetText()))
        {
            clipboardSaveTextBox.Text += "\n" + Clipboard.GetText();
        }
    }

这是..如果clipboardSaveTextBox.Text不包含剪贴板的值,它将(+ =添加)存储在剪贴板中的当前值传递给clipboardSaveTextBox.Text。

我希望我的回答可以帮助其他可能遇到同样问题的人。