“{”和“}”SendKeys.Send-Methode转换器

时间:2013-04-12 15:54:38

标签: c#

我想使用SendKeys.Send-Methode

{}具有特殊含义。我的文字确实包含{}

所以我想先转换我的文字。我想到了这样的事情:

 static void Main(string[] args)
    {
        string text = "blub{ibu{blab}blab";
        Console.WriteLine(text);
        Console.WriteLine(convertForSendKey(text));
        Console.ReadKey();
    }

    public static string convertForSendKey(string password)
    {
            if (password.Contains('{'))
            {
                string[] parts = password.Split('{');
                string tmp = parts[0];
                for (int i = 1; i < parts.Length; i++)
                {
                    tmp += "{{}" + parts[i];
                }
                password = tmp;
            }
            if (password.Contains('}'))
            {
                string[] parts2 = password.Split('}');
                string tmp2 = parts2[0];
                for (int i = 1; i < parts2.Length; i++)
                {
                    tmp2 += "{}}" + parts2[i];
                }
                password = tmp2;
            }
            return password;
    }

当然它不会那样工作,因为在第二个if中,它也将转换所有{{}部分,而不应该转换它。

2 个答案:

答案 0 :(得分:0)

尝试 {{ \{ 进行该符号转义。 }} \}

也是如此

此外,您的字符替换代码不正确。 尝试使用string.Replace

string one = "abc";
string two = one.Replace("c", " dd");

// two is "ab dd".

答案 1 :(得分:0)

也许是这样的:

static string EscapeChar(char c)
{
    switch (c)
    {
        case '{':
            return "{{}";
        case '}':
            return "{}}";
        default:
            return c.ToString();

    }
}

public static string ConvertForSendKey(string password)
{
    return String.Concat(password.Select(EscapeChar));
}

如果有效,它首先使用LINQ扩展方法Select将每个字符投影到其相关字符串上。然后使用Concat将所有短字符串粘合在一起。