String.Format中的 @ 和 % 是什么意思

时间:2022-02-04 16:00:52
别人写了一个函数把pdf存到硬盘上, 其中两句:
String.Format(@"%TEMP%\{0}", Guid.NewGuid()
String.Format(@"{0}\{1}.pdf", tempdir, fileName);

不是很理解 @ 和 % 是什么意思, 请教大家, 我想指定路径为 D:\PDF report, 不知跟着两个符号有没有关系, 谢谢了.... 

17 个解决方案

#1


string  a=“\\a”;   \是转义符合      实际上a存的就是 "\a"
上面的表达式就等价于
string a=@“\a”;
所以@ 的意思 =就是     这个字符串,忽略转义符合

% 没什么意思

#2


@"" 
字符串前面加@是给字符串转义。

#3


%TEMP%应该是环境变量,指你电脑上temp文件夹路径

#4


恩 上面说的挺清楚的了

#5


String.Format(@"%TEMP%\{0}", Guid.NewGuid() 
的结果是%TEMP%\Guid.NewGuid() 
%原样输出

#6


谢谢大家的解答, 
@符号:明白了,就是对后边引号内的所有保留字符转义, 而不用每个都加"/"在前边
%符号:还是不明白, 如果像3楼所说的%temp%为路径, 那%具体是什么意思? temp前后都有%, 是成对出现的还是每个%本身有自己的意思?

#7


up

#8


5楼的朋友, 请问"%原样输出"怎么理解

#9


%跟string.Format没有关系。%temp%是Windows系统的事情,它是一个环境变量,代表着您的零时目录地址。

你可以到dos提示符下,输入:
echo %temp%

然后你就可以看到具体的零时目录地址了

#10


在C#的string.Format中,不会对%作处理,因此,还是会输出%TEMP%这样的内容

#11


%保持原意,就是百分号的意思,在C#中没有其它意义,不过在Windows系统中,%temp%代表系统的临时文件夹,你在“开始”->“运行”里输入%temp%,会打开那个文件夹的,这是和C#无关的符号。

#12


感谢各位的发言, 现在基本上懂了, %temp%是windows的程序, 同理还有%system%这些, 这里的%temp%要跟Environment.ExpandEnvironmentVariables结合使用, 一开始不知道所有没有写出这个. 还有最后一个问题, 既然%***%这些是windows预定义的, 有没有用来表示D盘的? 因为文件想存到D盘...再次感谢一下. 

#13


找了好久都没找到, 实在不行直接就D:\.....表示算了~~~~

#14


引用 12 楼 bimota 的回复:
感谢各位的发言, 现在基本上懂了, %temp%是windows的程序, 同理还有%system%这些, 这里的%temp%要跟Environment.ExpandEnvironmentVariables结合使用, 一开始不知道所有没有写出这个. 还有最后一个问题, 既然%***%这些是windows预定义的, 有没有用来表示D盘的? 因为文件想存到D盘...再次感谢一下.

你可以看看你的环境变量

#15


使用@,系统会自动给你的路径字符串中的转义'\',改为'\\',
C#中'\'是转义符,
比如:'\''
输出: ' 
比如: '\"' 
输出: "
.......

#16


谢谢你们, 结贴, 加强基础知识学习 :)

#17


养成及时结贴好习惯

#1


string  a=“\\a”;   \是转义符合      实际上a存的就是 "\a"
上面的表达式就等价于
string a=@“\a”;
所以@ 的意思 =就是     这个字符串,忽略转义符合

% 没什么意思

#2


@"" 
字符串前面加@是给字符串转义。

#3


%TEMP%应该是环境变量,指你电脑上temp文件夹路径

#4


恩 上面说的挺清楚的了

#5


String.Format(@"%TEMP%\{0}", Guid.NewGuid() 
的结果是%TEMP%\Guid.NewGuid() 
%原样输出

#6


谢谢大家的解答, 
@符号:明白了,就是对后边引号内的所有保留字符转义, 而不用每个都加"/"在前边
%符号:还是不明白, 如果像3楼所说的%temp%为路径, 那%具体是什么意思? temp前后都有%, 是成对出现的还是每个%本身有自己的意思?

#7


up

#8


5楼的朋友, 请问"%原样输出"怎么理解

#9


%跟string.Format没有关系。%temp%是Windows系统的事情,它是一个环境变量,代表着您的零时目录地址。

你可以到dos提示符下,输入:
echo %temp%

然后你就可以看到具体的零时目录地址了

#10


在C#的string.Format中,不会对%作处理,因此,还是会输出%TEMP%这样的内容

#11


%保持原意,就是百分号的意思,在C#中没有其它意义,不过在Windows系统中,%temp%代表系统的临时文件夹,你在“开始”->“运行”里输入%temp%,会打开那个文件夹的,这是和C#无关的符号。

#12


感谢各位的发言, 现在基本上懂了, %temp%是windows的程序, 同理还有%system%这些, 这里的%temp%要跟Environment.ExpandEnvironmentVariables结合使用, 一开始不知道所有没有写出这个. 还有最后一个问题, 既然%***%这些是windows预定义的, 有没有用来表示D盘的? 因为文件想存到D盘...再次感谢一下. 

#13


找了好久都没找到, 实在不行直接就D:\.....表示算了~~~~

#14


引用 12 楼 bimota 的回复:
感谢各位的发言, 现在基本上懂了, %temp%是windows的程序, 同理还有%system%这些, 这里的%temp%要跟Environment.ExpandEnvironmentVariables结合使用, 一开始不知道所有没有写出这个. 还有最后一个问题, 既然%***%这些是windows预定义的, 有没有用来表示D盘的? 因为文件想存到D盘...再次感谢一下.

你可以看看你的环境变量

#15


使用@,系统会自动给你的路径字符串中的转义'\',改为'\\',
C#中'\'是转义符,
比如:'\''
输出: ' 
比如: '\"' 
输出: "
.......

#16


谢谢你们, 结贴, 加强基础知识学习 :)

#17


养成及时结贴好习惯