0-9 এবং একটি পিরিয়ড নয় এমন সমস্ত অক্ষর এবং অক্ষর মুছে ফেলার চেষ্টা করছেন। আমি ব্যবহার করছি Character.isDigit()তবে এটি দশমিকও সরিয়ে দেয়, আমি কীভাবে দশমিক রাখব?
0-9 এবং একটি পিরিয়ড নয় এমন সমস্ত অক্ষর এবং অক্ষর মুছে ফেলার চেষ্টা করছেন। আমি ব্যবহার করছি Character.isDigit()তবে এটি দশমিকও সরিয়ে দেয়, আমি কীভাবে দশমিক রাখব?
উত্তর:
এই কোড ব্যবহার করে দেখুন:
String str = "a12.334tyz.78x";
str = str.replaceAll("[^\\d.]", "");
এখন strথাকবে "12.334.78"।
[^\\d.-]
"1233478"যা ভুল which
আমি একটি রেজেক্স ব্যবহার করব
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-libraries/wiki/StringsExplained
str = str.replaceAll("\\D+","");
printf()তা সদৃশ like এছাড়াও যদি আপনি মন্তব্যে কোনও উত্তর দেখতে পান তবে আপনি এটিকে একটি উত্তরে রূপান্তর করতে বা এমনকি নিজের নিজের একটি উত্তর যুক্ত করতে মোডকে বলতে পারেন - মন্তব্যে উত্তরগুলি স্ট্যাকওভারলোতে নিরুৎসাহিত করা হয়।
Regex ব্যবহার না করে সহজ উপায়:
বিন্দুর জন্য অতিরিক্ত চরিত্রের চেক যুক্ত করা '.'প্রয়োজনীয়তার সমাধান করবে:
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;
}
আমি আশা করি এটি সাহায্য করতে পারে, '।
কোটলিনের জন্য এখানে আসা অ্যান্ড্রয়েড লোকেরা
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