0-9 और एक अवधि के सभी अक्षरों और वर्णों को हटाने की कोशिश करना। मैं उपयोग कर रहा हूं, Character.isDigit()
लेकिन यह दशमलव भी निकालता है, मैं दशमलव को कैसे रख सकता हूं?
0-9 और एक अवधि के सभी अक्षरों और वर्णों को हटाने की कोशिश करना। मैं उपयोग कर रहा हूं, Character.isDigit()
लेकिन यह दशमलव भी निकालता है, मैं दशमलव को कैसे रख सकता हूं?
जवाबों:
इस कोड को आज़माएं:
String str = "a12.334tyz.78x";
str = str.replaceAll("[^\\d.]", "");
अब str
होगा "12.334.78"
।
[^\\d.-]
"1233478"
, जो गलत है।
मैं एक regex का उपयोग करेगा।
String text = "-jaskdh2367sd.27askjdfh23";
String digits = text.replaceAll("[^0-9.]", "");
System.out.println(digits);
प्रिंट
2367.2723
आप -
नकारात्मक संख्या के लिए भी रखना पसंद कर सकते हैं ।
^
और .
इस बयान में मतलब?
[^
इन पात्रों अर्थ है और नहीं एक के अंदर []
एक .
सिर्फ एक है.
.
सिर्फ एक है a
और इसका कोई मतलब नहीं है, क्या मैं इससे छुटकारा पा सकता हूँ?
.
अपने परिणाम में कोई एस नहीं चाहते हैं ।
String phoneNumberstr = "Tel: 00971-557890-999";
String numberRefined = phoneNumberstr.replaceAll("[^\\d-]", "");
परिणाम: 0097-557890-999
अगर आपको भी "-" की आवश्यकता नहीं है, तो स्ट्रिंग में आप ऐसा कर सकते हैं:
String phoneNumberstr = "Tel: 00971-55 7890 999";
String numberRefined = phoneNumberstr.replaceAll("[^0-9]", "");
परिणाम: 0097557890999
अमरूद के साथ:
String input = "abx123.5";
String result = CharMatcher.inRange('0', '9').or(CharMatcher.is('.')).retainFrom(input);
http://code.google.com/p/guava-lbooks/wiki/StringsExplained देखें
str = str.replaceAll("\\D+","");
printf()
डुप्लिकेट हैं। यदि आप टिप्पणी में उत्तर देखते हैं, तो आप इसे एक उत्तर में बदलने के लिए मॉड पूछ सकते हैं या यहां तक कि अपने दम पर एक उत्तर भी जोड़ सकते हैं - टिप्पणियों में उत्तर StackOverlow पर हतोत्साहित किए जाते हैं।
रेगेक्स का उपयोग किए बिना सरल तरीका:
डॉट के लिए एक अतिरिक्त वर्ण जांच जोड़ने '.'
से आवश्यकता का समाधान होगा:
public static String getOnlyNumerics(String str) {
if (str == null) {
return null;
}
StringBuffer strBuff = new StringBuffer();
char c;
for (int i = 0; i < str.length() ; i++) {
c = str.charAt(i);
if (Character.isDigit(c) || c == '.') {
strBuff.append(c);
}
}
return strBuff.toString();
}
इसे जावा 8 स्ट्रीम से बदलने का एक तरीका:
public static void main(String[] args) throws IOException
{
String test = "ab19198zxncvl1308j10923.";
StringBuilder result = new StringBuilder();
test.chars().mapToObj( i-> (char)i ).filter( c -> Character.isDigit(c) || c == '.' ).forEach( c -> result.append(c) );
System.out.println( result ); //returns 19198.130810923.
}
मुद्रा दशमलव विभाजक लोकेल से दूसरे में भिन्न हो सकता है। .
हमेशा विभाजक के रूप में विचार करना खतरनाक हो सकता है । अर्थात
╔════════════════╦═══════════════════╗
║ Currency ║ Sample ║
╠════════════════╬═══════════════════╣
║ USA ║ $1,222,333.44 USD ║
║ United Kingdom ║ £1.222.333,44 GBP ║
║ European ║ €1.333.333,44 EUR ║
╚════════════════╩═══════════════════╝
मुझे लगता है कि उचित तरीका है:
DecimalFormatSymbols
डिफ़ॉल्ट स्थान या निर्दिष्ट एक के माध्यम से दशमलव चरित्र प्राप्त करें ।और यहाँ मैं इसे कैसे हल कर रहा हूँ:
import java.text.DecimalFormatSymbols;
import java.util.Locale;
कोड:
public static String getDigit(String quote, Locale locale) {
char decimalSeparator;
if (locale == null) {
decimalSeparator = new DecimalFormatSymbols().getDecimalSeparator();
} else {
decimalSeparator = new DecimalFormatSymbols(locale).getDecimalSeparator();
}
String regex = "[^0-9" + decimalSeparator + "]";
String valueOnlyDigit = quote.replaceAll(regex, "");
try {
return valueOnlyDigit;
} catch (ArithmeticException | NumberFormatException e) {
Log.e(TAG, "Error in getMoneyAsDecimal", e);
return null;
}
return null;
}
मुझे उम्मीद है कि मदद मिल सकती है। '
कोटलिन के लिए यहां आने वाले Android लोगों के लिए
val dirtyString = "💰 Account Balance: $-12,345.67"
val cleanString = dirtyString.replace("[^\\d.]".toRegex(), "")
आउटपुट:
cleanString = "12345.67"
यह तब सुरक्षित रूप से परिवर्तित किया जा सकता है toDouble()
, toFloat()
या toInt()
यदि आवश्यक हो
यह आपके प्रोजेक्ट में अशक्त इनपुट, नकारात्मक संख्या और दशमलव (आपको अपाचे कॉमन्स लैंग लाइब्रेरी, संस्करण 3.8 या उच्चतर को शामिल करने की आवश्यकता है) को संभालता है:
import org.apache.commons.lang3.RegExUtils;
result = RegExUtils.removeAll(input, "-?[^\\d.]");
पुस्तकालय संदर्भ: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/RegExUtils.html