我想使用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
中,它也将转换所有{{}
部分,而不应该转换它。
答案 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
将所有短字符串粘合在一起。