2014-08-28 8 views
9

हटाएं मैं स्ट्रिंग मान में पिछला शून्य कैसे हटा सकता हूं और दशमलव बिंदु के बाद स्ट्रिंग में केवल शून्य होने पर दशमलव बिंदु को हटा सकता हूं? मैं नीचे दिए गए कोड का उपयोग कर रहा:स्ट्रिंग मान में पिछला शून्य कैसे निकालें और दशमलव बिंदु

String string1 = Double.valueOf(a).toString() 

यह (10.10 और 10.2270) में शून्य अनुगामी निकालता है, लेकिन मैं 1 और 2 आदानों के लिए अपने अपेक्षित परिणाम नहीं मिलता है।

इनपुट

10.0 
10.00 
10.10 
10.2270 

अपेक्षित उत्पादन

10 
10 
10.1 
10.227 
+0

का उपयोग कर BigDecimal –

+0

सबसे अच्छा शर्त ऐसी आवश्यकता – vikeng21

+0

के लिए रेगुलर एक्सप्रेशन से प्रस्तावित दो प्रतियों @ScaryWombat इनपुट के रूप में एक 'double' है कोशिश । इस प्रश्न में 'स्ट्रिंग' है। – jdphenix

उत्तर

-1

प्रयास करें

DecimalFormat decimalFormat = new DecimalFormat("#.##"); 
String string1 = decimalFormat.format(10.000); 
+2

यह दूसरे मंटिसा अंकों से परे कुछ भी हटा देगा। – jdphenix

-3

प्रयास करें इस तरह regex:

public static void main(String[] args) { 
    String s = "10.0"; 
    System.out.println(s.replaceAll("[0]+$", "").replaceAll("(\\.)(?!.*?[1-9]+)", "")); 

} 

O/P: 
10 

input :String s = "10.0750"; 
O/P : 10.075 

input : String s = "10.2750"; 
O/P : 10.275 
+1

मुझे कमजोर होने पर कोई फर्क नहीं पड़ता। लेकिन मैं जानना चाहता हूं ** क्यों **? – TheLostMind

+0

DV नहीं, लेकिन जैसा कि किसी और ने कहा था "हर लोकेल में काम नहीं कर सकता है। कुछ दशमलव बिंदुओं को समूह विभाजक के रूप में उपयोग करते हैं" –

7

जावा लाइब्रेरी में अंतर्निहित क्लास है जो इसके लिए ऐसा कर सकता है। यह BigDecimal है।

यहाँ एक उदाहरण उपयोग है:

BigDecimal number = new BigDecimal("10.2270"); 
System.out.println(number.stripTrailingZeros().toPlainString()); 

आउटपुट:

10.227 

ध्यान दें: यह BigDecimal निर्माता है कि एक String लेता है का उपयोग करने के लिए महत्वपूर्ण है। आप शायद वह नहीं चाहते हैं जो double लेता है।


यहाँ एक विधि है कि एक Collection<String> लेने के लिए और लिपटे हटाया अनुगामी शून्य, उपहार के साथ संख्या का एक और Collection<String> वापस आ जाएगी है।

public static Collection<String> stripZeros(Collection<String> numbers) { 
    if (numbers == null) { 
     throw new NullPointerException("numbers is null"); 
    } 

    ArrayList<String> value = new ArrayList<>(); 

    for (String number : numbers) { 
     value.add(new BigDecimal(number).stripTrailingZeros().toPlainString()); 
    } 

    return Collections.unmodifiableList(value); 
} 

उदाहरण उपयोग:

ArrayList<String> input = new ArrayList<String>() {{ 
    add("10.0"); add("10.00"); add("10.10"); add("10.2270"); 
}}; 

Collection<String> output = stripZeros(input); 
System.out.println(output); 

आउटपुट:

[10, 10, 10.1, 10.227] 
+0

कोई भी रास्ता +1 –

+1

मुझे पता चला कि 'स्ट्रिप ट्रेलिंग ज़ीरोस()' को 'toplainString'() 'आउटपुट में परिणाम जो आपके spec के बाहर है। मैंने अपना जवाब सही कर दिया है। – jdphenix

+0

मैंने सवाल पूछा नहीं है –

संबंधित मुद्दे