我需要将字符串中的值与在richtextbox中键入的用户进行比较。
例如:如果一个richtextbox包含string rtbText = "aaaka"
,我将其与另一个变量string comparable = "ka"
进行比较(我希望它向后比较)。我希望来自rtbText
的最后两个字母(可比较只有2个字母)被替换为预定的东西(并不重要)。
所以rtbText
应该是这样的:
rtbText = "aaa(something)"
这并不需要进行比较,它只能计算comparable
中的字母,并根据它可以删除rtbText
中的2个字母并将其替换为其他字母。
更新: 这就是我所拥有的:
int coLen = comparable.Length;
comparable = null;
TextPointer caretBack = rtb.CaretPosition.GetPositionAtOffset(coLen, LogicalDirection.Backward);
TextRange rtbText = new TextRange(rtb.CaretPosition, caretBack);
string text = rtbText.Text;
rtbText返回一个空字符串,否则我会收到超过3个字符的错误。我究竟做错了什么?
让我再详细说明一下。我有一个列表框,其中包含用户在rtb中键入的值的替换。值(替换)来自那里,这意味着我并不需要通过整个文本来检查值。我只需要在插入之前检查值。我将这些值与我在另一个变量(comparable
)中存储的值进行比较。
如果您不了解某事,请告诉我。 我尽力解释需要做些什么。 谢谢
答案 0 :(得分:2)
您可以使用Regex.Replace
。
// this replaces all occurances of "ka" with "Replacement"
Regex replace = new Regex("ka");
string result = replace.Replace("aaaka","Replacemenet");
答案 1 :(得分:1)
步骤2中的排序是必要的,因为我们总是希望从最后一次出现到第一次出现。从第一次出现或任何其他下降开始会有一个令人不快的惊喜 - 如果你要删除的块的长度和你想要追加的块的长度是不同的长度,字符串将被修改和所有其他事件将无效(例如,如果第二次出现在第12位并且你的新字符串比原始字符串长2个字符,它将变为第14个字符)。如果我们从最后一次出现到第一次出现,这不是问题,因为字符串中的更改不会影响列表中的下一次出现。)
当然,我不能确定这是可用于实现预期结果的最快方式。这就是我提出的以及对我有用的东西。
祝你好运!