2012-12-07 21 views
6

क्या String.format कॉल में नंबरों को स्थानीयकरण करना संभव है जैसे नंबरफॉर्मैट.फॉर्मैट करता है?जावा स्ट्रिंग.फॉर्मैट: स्थानीयकरण के साथ संख्या

मैं बस

String.format(locale, "%d", number) 

उपयोग करने के लिए यह आशा की जाती है, लेकिन यह एक ही परिणाम वापस नहीं करता है के रूप में यदि NumberFormat का उपयोग कर। उदाहरण के लिए:

String.format(Locale.GERMAN, "%d", 1234567890) 

देता है: "1234567890", जबकि

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890) 

देता है: "1.234.567.890"

यदि ऐसा नहीं किया जा सकता है, कि किसका सुझाव दिया रास्ता सहित पाठ का स्थानीयकरण करने के लिए संख्या?

+2

क्यों आप अपने "स्ट्रिंग-संख्या" एक संख्या में पहले पार्स और संख्या फ़ॉर्मेटर बाद में साथ स्वरूपण नहीं करते? – Chris

+0

मेरा "स्ट्रिंग-नंबर" एक स्ट्रिंग युक्त संख्या हो सकता है, इसलिए मैं इसे संख्या में पार्स नहीं कर सकता। – wziska

उत्तर

9

documentation से, आप के लिए है:

  • आपूर्ति के लिए कोई स्थान (जैसा कि आप अपने उदाहरण में कर रहे हैं)
  • ',' शो भाषा-विशिष्ट समूह विभाजक करने के लिए ध्वज शामिल

तो अपने उदाहरण बन जाएगा:

String.format(Locale.GERMAN, "%,d", 1234567890) 

'डी' से पहले अतिरिक्त ',' ध्वज नोट करें।

+0

बिल्कुल सही! मुझे नहीं पता कि मुझे इसे दस्तावेज पढ़ने में क्या याद आया। – wziska

2

String.format() के लिए एक वैकल्पिक MessageFormat उपयोग करने के लिए है:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN); 
String s = format.format(new Object[] {number});