如何在C#中转义变量?

时间:2015-02-27 06:00:48

标签: c# string variables escaping

我想知道错误是什么 这个代码的和平?我的意思是如何逃避 来自字符串的变量(在C#中)? (如果我已经正确地理解了逃避的是什么。)

int i;
string s;
for(i=0;i<10;i++)
{
s="\u00A"+i;
Console.WriteLine(s);
}

(其实我想要程序写 一组unicode聊天器来制作一个解码表,例如00A9 =®和00A5 =¥。 或者一般来说我想在反斜杠之后使用一个变量)

简化:

string a,b;
a="t";
b="n";
Console.WriteLine("Hi\{0}All\{1}",a,b);

我想输入一个标签并插入一个新行(我知道可以在WriteLine中直接写\ n和\ t,但我想我们想从用户那里获得特殊的字符) 提前致谢。 ☺

3 个答案:

答案 0 :(得分:2)

int i;
string x;
for(i=0;i<10;i++)
{
x= @"\u00A" + i; //if you want the backslash
// without @ it's x= "\\u00A"+i; //so the backslash is escaped
Console.WriteLine(x);
}

修改

for (int i = 0; i < 10; i++)
{
     Console.WriteLine(
         char
         .ConvertFromUtf32(
             int.Parse("00A"+ i, System.Globalization.NumberStyles.HexNumber)));
}

关于另一个问题你唯一能做的就是:

string a,b;
a="\t";
b="\n";
Console.WriteLine("Hi{0}All{1}",a,b);

答案 1 :(得分:0)

同样保留反斜杠会使其成为“无法识别的转义序列”,因此您需要使用第二个反斜杠来取消或“转义”反斜杠,从而制作最终代码:

int i;
string x;
for(i=0;i<10;i++)
{
    x="\\u00A" + i;
    Console.WriteLine(x);
}

答案 2 :(得分:0)

Unicode转义序列需要4位数字:

for(var i = 0; i < 10; i++)
{
  var x="\u000A"+i; // notice 3 zeros
  Console.WriteLine(x);
}

注释

  • 通常您会将"\n"用于新行(甚至是Environemnt.NewLine),例如Console.Write("\n" + i);
  • 向字符串添加整数(或任何其他值)会导致自动调用.ToString,因此您可以将任何对象添加到字符串中。通常最好使用String.Format("\n {0}", i);而不是+来提供更灵活/可读的格式(添加许多字符串 - 有更好的方法 - 搜索)。
  • 如果您正在寻找将代码写入特定整数值的字符(如32是空格),则应将其转换为charx="\u000A"+(char)i - 您也应选择可打印范围(如32- 42)。