将字符串转换为SendKeys.Send()格式的字符串

本文关键字:字符串 格式 SendKeys 转换 Send | 更新日期: 2023-09-27 18:08:28

是否有任何聪明而整洁的方法来转义string中的字符,以使其与SendKeys使用的特定格式兼容?

一开始我以为这样可以:

line = Regex.Replace(line, @"'{{0}", "{{}");
line = Regex.Replace(line, @"'}{0}", "{}}");

但是这行不通,因为它做了两次检查,把语法完全弄乱了。

我该如何处理?

将字符串转换为SendKeys.Send()格式的字符串

您可以使用一些占位符代替{},并使用这些占位符创建格式化的结果。最后用{}代替这些占位符。例如:

string PrepareForSendKeys(string input)
{
    var specialChars = "+^%~(){}";
    var c1 = "[BRACEOPEN]";
    var c2 = "[BRACECLOSE]";
    specialChars.ToList().ForEach(x =>
    {
        input = input.Replace(x.ToString(),
            string.Format("{0}{1}{2}", c1, x.ToString(), c2));
    });
    input = input.Replace(c1, "{");
    input = input.Replace(c2, "}");
    return input;
}

你可以这样使用:

var input = "some string containing + ^ % ~ ( ) { }";
MessageBox.Show(PrepareForSendKeys(input));

结果是:

some string containing {+} {^} {%} {~} {(} {)} {{} {}}