字符串格式化函数string.format中的格式字符串包含{。

3

在调用string.format时,有没有一种方式可以包含一个不用于子字符串插入的{字符的格式化字符串?

例如,我该如何实现这个...

string.format("my format has this { in it {0}", abc);

返回中...

"my format has this { in it abc"

我需要这样做是因为我在创建HTML字符串时将包含一段JavaScript脚本块。

谢谢


可能是重复的问题:使用string.format(...)输出'{'或'}' - Conrad Frix
1
需要注意的是,文档中有一个完整的章节涉及到这个问题:http://msdn.microsoft.com/zh-cn/library/txafckwd.aspx - phoog
5个回答

14

是的,你只需要把它乘以二:

string.Format("my format has this {{ in it {0}", abc);

请查看Composite Formatting的MSDN页面上的“转义大括号”部分以获取更多详细信息。


因此,对于OP的用例,他需要在JavaScript中始终使用{{}}。或者进行预处理。很恶心。 - Yuck
1
我不知道。我以为所有的东西都是用 \ 转义的。 - Robert Harvey
1
@Yuck:说实话,最好不要使用格式化字符串来生成Javascript... - Jon Skeet

4

将其重复一次以避免转义。因此,"{{" 将正常工作,并且将作为单个 "{" 从string.format中输出。


4

在您的格式字符串中使用双重{{大括号。


2

请在您的答案中提供一些细节,以配合任何链接。 - Yuck
@Yuck,当我刷新页面时,页面已经充满了答案,所以认为添加的文本是无用的,但还是不错的决定。 - user1231231412

-2

这被称为转义。通常在奇怪的字符前面加上 \


"未识别的转义序列。" - duedl0r
2
大多数情况下是这样,但在这种情况下不是。 - phoog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接