1. 程式人生 > >MessageFormat之拒絕字串拼接

MessageFormat之拒絕字串拼接

在開發專案過程中,經常會碰到拼接字串的場景。尤其是上傳檔案時,檔案儲存的路徑都是要自動生成的,這樣就會拼接路徑。
1.普通解決方法
假設檔案路徑為d:/files/doc/learn,對於該路徑的拼接,我們經常有以下兩種拼接方式:

這裡寫圖片描述

第二種就是通過StringBuilder物件方法:
這裡寫圖片描述

以上兩種方法都是很麻煩的,程式碼也不少,有的時候還容易拼錯。下面我們介紹一種便捷的方法,利用java.text包下的MessageFormat類中的方法。
2.推薦的方法
在MessageFormat類中提供了format方法,其可以對字串進行連線處理。廢話少說,直接丟擲例項:

這裡寫圖片描述

beforePath作為afterPath的預物件,通過呼叫MessageFormat.format方法將”d:/files”,”/doc”,”/learn”依次對映到beforePath索引位置。對映關係如下表:

這裡寫圖片描述

format方法引數列表中,從第二個開始是要對映的字串,我們也可以使用陣列,預先將對映的多個字串放在陣列中:

這裡寫圖片描述

上面兩種方式列印的結果都是
這裡寫圖片描述
除了對字串引數進行對映,我們也可以處理非字串型別。如果上面的陣列params元素都是浮點型別,我們可以對浮點數字取有效位操作。

這裡寫圖片描述

{0,number,#.#}就是取出陣列params的第一個元素,且保留一位小數。其他的依次類推。
這裡有幾個需要注意的地方:

1.陣列prams的型別必須是物件,不能是基本資料型別
2.{0,number,#.#}中的number不區分大小寫,但是不能不寫。
列印結果
這裡寫圖片描述
總結:本文主要介紹一種更加便捷的字串連線方法,MessageFormat獲取一組物件,格式化這些物件,然後將格式化後的字串插入到模式中的適當位置。另外,其還可以對數字格式化操作,功能實在強大。jdk中存在很多有用的api,其可以實現我們平時自己去實現的功能。如果想成為優秀的java工程師,常用的api必須要掌握的。