java字符串 大括号_string.format格式化字符串中转义大括号“{}”
今天,用Java讀取配置文件占位符,使用String.Format(string format,object arg0)方法。以前只知“{0}”為索引占位符(即格式項(xiàng)),與參數(shù)列表中的第一個(gè)對象相對應(yīng),格式設(shè)置過程將每個(gè)格式項(xiàng)替換為對應(yīng)對象的值的文本表示形式。但這次需將參數(shù)對象格式成一對大括號括起來的格式,即返回字符串“{對象arg0的文本表示形式}”。
//直接加大括號
String.Format("{{0}}",1);//{0}
如果使用上面語句,并不能獲得所需結(jié)果“{1}”,因?yàn)樽蟠罄ㄌ柡陀掖罄ㄌ柋唤忉尀楦袷巾?xiàng)的開始和結(jié)束,如果要在format參數(shù)中指定大括號字符,須使用轉(zhuǎn)義序列顯示文本左大括號或右大括號。在格式化字符串中這個(gè)轉(zhuǎn)義字符還是大括號本身。因此,在固定文本中指定兩個(gè)左大括號 (“{{”) 以顯示一個(gè)左大括號 (“{”),或指定兩個(gè)右大括號 (“}}”) 以顯示一個(gè)右大括號 (“}”)。
//本例的一種正確方式
String.Format("{{{0}}}",1);//{1}
按照在format中遇到大括號的順序依次解釋它們,不支持解釋嵌套的大括號。雖然上面能得到正確結(jié)果,但解釋轉(zhuǎn)義大括號的方式會(huì)導(dǎo)致意外的結(jié)果。例如,考慮要顯示一個(gè)左大括號、一個(gè)格式化為十進(jìn)制數(shù)的數(shù)值和一個(gè)右大括號的格式項(xiàng)“{{{0:D}}}“。但是,實(shí)際是按照以下方式解釋該格式項(xiàng):
1、前兩個(gè)左大括號 ("{{") 被轉(zhuǎn)義,生成一個(gè)左大括號;2、之后的三個(gè)字符 ("{0:") 被解釋為格式項(xiàng)的開始。3、下一個(gè)字符 ("D") 將被解釋為 Decimal 標(biāo)準(zhǔn)數(shù)值格式說明符,但后面的兩個(gè)轉(zhuǎn)義大括號 ("}}") 生成單個(gè)大括號。
由于得到的字符串 ("D}") 不是標(biāo)準(zhǔn)數(shù)值格式說明符號,所以得到的字符串會(huì)被解釋為用于顯示字符串“D}”的自定義格式字符串。4、最后一個(gè)大括號 ("}") 被解釋為格式項(xiàng)的結(jié)束。5、顯示的最終結(jié)果是字符串“{D}”。不會(huì)顯示本來要格式化的數(shù)值。
在編寫代碼時(shí),避免錯(cuò)誤解釋轉(zhuǎn)義大括號和格式項(xiàng)的一種方法是單獨(dú)格式化大括號和格式項(xiàng)。也就是說,在第一個(gè)格式化操作中顯示文本左大括號,在下一操作中顯示格式項(xiàng)的結(jié)果,然后在最后一個(gè)操作中顯示文本右大括號。
//正確無誤的形式
String.Format("{0}{1}{2}","{",1,"}");//{1}
總結(jié)
以上是生活随笔為你收集整理的java字符串 大括号_string.format格式化字符串中转义大括号“{}”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python海贼王logo_Python
- 下一篇: android 调用java webse