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

时间:2016-09-23 00:32:40

标签: c# .net winforms

我是否有任何聪明而巧妙的方法来猜测string中的转义字符是否与SendKeys使用的特定格式兼容?

起初我认为这样可行:

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

但这不会起作用,因为它会进行两次检查并完全弄乱语法。

我该如何处理?

1 个答案:

答案 0 :(得分:1)

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

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 {+} {^} {%} {~} {(} {)} {{} {}}