আমি বিশেষ অক্ষরগুলি মুছতে চাই:
- + ^ . : ,
জাভা ব্যবহার করে একটি স্ট্রিং থেকে।
আমি বিশেষ অক্ষরগুলি মুছতে চাই:
- + ^ . : ,
জাভা ব্যবহার করে একটি স্ট্রিং থেকে।
replaceAllসেগুলি দূরে আপনার প্যাটার্নটি গঠন করুন । আপনার যদি আরও গোপনীয় প্রয়োজনীয়তা থাকে তবে প্রশ্নটি সম্পাদনা করুন। :)
replaceAllতাদের জন্য কিছু করুন, বা একটি বিশ্লেষণ করুন স্ট্রিং, এমন অক্ষর যুক্ত করুন যা আপনি অন্য স্ট্রিংয়ের সাথে বের করতে চান এমন অক্ষরগুলি যোগ করুন এবং শেষে আপনি যে স্ট্রিংটি ফিরে আসবেন তার জন্য কেবলমাত্র একটি + = করুন।
deleteChars.apply( fromString, "-+^.:," );- এখানে ডিলিটচারগুলি সন্ধান করুন
উত্তর:
এটি বিশেষ চরিত্র হিসাবে আপনি কী সংজ্ঞা দেন তার উপর নির্ভর করে তবে চেষ্টা করুন replaceAll(...):
String result = yourString.replaceAll("[-+.^:,]","");
নোট করুন যে ^অক্ষরটি অবশ্যই তালিকার প্রথমটি হওয়া উচিত নয়, যেহেতু আপনাকে তখন এড়িয়ে যেতে হবে অথবা এর অর্থ "এই অক্ষরগুলি ব্যতীত অন্য কোনও" হবে।
আরেকটি নোট: -চরিত্র অন্যথায় আপনি এটি অব্যাহতি আছে চাই বা এটি একটি পরিসর নির্ধারণ করবে (যেমন তালিকায় প্রথম অথবা শেষ এক হতে প্রয়োজন, :-,"সীমার মধ্যে সমস্ত অক্ষর মানে হবে :থেকে ,)।
সুতরাং, অর্ডার দৃঢ়তা রাখতে এবং চরিত্র পজিশনিং উপর নির্ভর করে, আপনি সমস্ত অক্ষর আছে যা রেগুলার এক্সপ্রেশনের একটি বিশেষ অর্থ আছে অব্যাহতি চাইতে পারেন (নিম্নলিখিত তালিকা সম্পূর্ণ নয়, তাই অন্যান্য অক্ষরের সচেতন হতে হয় পছন্দ (, {, $ ইত্যাদি) :
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
আপনি যদি সমস্ত বিরামচিহ্ন এবং চিহ্নগুলি থেকে মুক্তি পেতে চান তবে এই রেজেক্সটি ব্যবহার করে দেখুন: \p{P}\p{S}(মনে রাখবেন যে জাভা স্ট্রিংগুলিতে আপনাকে পিছনে পিছনে যেতে হবে "\\p{P}\\p{S}") s
তৃতীয় উপায়টি এর মতো কিছু হতে পারে, আপনি যদি আপনার স্ট্রিংয়ের মধ্যে কী ছেড়ে দিতে হবে তা সঠিকভাবে নির্ধারণ করতে পারেন:
String result = yourString.replaceAll("[^\\w\\s]","");
এর অর্থ: শব্দের অক্ষর নয় এমন সব কিছু প্রতিস্থাপন করুন (যে কোনও ক্ষেত্রে এজেড, 0-9 বা _) বা সাদা স্থান।
সম্পাদনা করুন: দয়া করে নোট করুন যে এখানে আরও কয়েকটি ধাঁচ রয়েছে যা সহায়ক হিসাবে প্রমাণিত হতে পারে। যাইহোক, আমি তাদের সমস্ত ব্যাখ্যা করতে পারছি না, তাই নিয়মিত- এক্সপ্রেসন.ইনফো এর রেফারেন্স বিভাগটি দেখুন ।
রায়ের পরামর্শ অনুসারে এখানে "অনুমোদিত অক্ষরগুলি সংজ্ঞায়িত করুন" পদ্ধতির কম সীমাবদ্ধ বিকল্প রয়েছে:
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
রেজেক্স এমন কোনও কিছুর সাথে মেলে যা কোনও ভাষার অক্ষর নয় এবং বিভাজক নয় (হোয়াইটস্পেস, লাইনব্রেক ইত্যাদি)। নোট করুন যে আপনি ব্যবহার করতে পারবেন না [\P{L}\P{Z}](আপার কেস পি এর অর্থ সেই সম্পত্তি না থাকা), যেহেতু এর অর্থ "সমস্ত কিছুই যা চিঠি নয় বা হোয়াইটস্পেস নয়", যা প্রায় সমস্ত কিছুর সাথে মেলে, যেহেতু অক্ষরগুলি শ্বেত স্পেস এবং বিপরীত নয়।
ইউনিকোডের অতিরিক্ত তথ্য
কিছু ইউনিকোড অক্ষরগুলি তাদের এনকোড করার বিভিন্ন সম্ভাব্য উপায়গুলির কারণে সমস্যাগুলির কারণ বলে মনে হচ্ছে (একক কোড পয়েন্ট বা কোড পয়েন্টের সংমিশ্রণ হিসাবে)। আরও তথ্যের জন্য দয়া করে নিয়মিত-এক্সপ্রেসন.ইন.ফো দেখুন।
[\P{L}]
-চরিত্রটি অবশ্যই তালিকার প্রথম বা শেষ একটি হতে হবে বা এড়াতে হবে।
[^\\p{L}\\p{Z}]জার্মান উমলৌতকে (ä, ö, ü) পাশাপাশি মুছে ফেলা বলে মনে হচ্ছে (কমপক্ষে এটি আমার জন্য এটি করে: /), সুতরাং "রেজেক্সগুলি কোনও ভাষার কোনও অক্ষর নয় এমন সমস্ত কিছুের সাথে মেলে" 100% সঠিক বলে মনে হচ্ছে না
String result = yourString.replaceAll("[^\w\s]","");ত্রুটি তোলেInvalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
এটি অক্ষর বাদে সমস্ত অক্ষর প্রতিস্থাপন করবে
replaceAll("[^A-Za-z0-9]","");
হিসাবে এখানে বর্ণিত http://developer.android.com/reference/java/util/regex/Pattern.html
প্যাটার্নগুলি নিয়মিত এক্সপ্রেশন সংকলিত হয়। অনেক ক্ষেত্রে সুবিধাজনক পদ্ধতি যেমন
String.matches,String.replaceAllএবংString.splitপছন্দনীয় হবে তবে যদি আপনাকে একই নিয়মিত অভিব্যক্তি দিয়ে অনেক কাজ করার প্রয়োজন হয় তবে এটি একবার সংকলন করে পুনরায় ব্যবহার করা আরও দক্ষ হতে পারে। প্যাটার্ন ক্লাস এবং এর সহযোগী ম্যাচার স্ট্রিংয়ের দ্বারা প্রকাশিত অল্প পরিমাণের চেয়ে বেশি কার্যকারিতা সরবরাহ করে।
public class RegularExpressionTest {
public static void main(String[] args) {
System.out.println("String is = "+getOnlyStrings("!&(*^*(^(+one(&(^()(*)(*&^%$#@!#$%^&*()("));
System.out.println("Number is = "+getOnlyDigits("&(*^*(^(+91-&*9hi-639-0097(&(^("));
}
public static String getOnlyDigits(String s) {
Pattern pattern = Pattern.compile("[^0-9]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
public static String getOnlyStrings(String s) {
Pattern pattern = Pattern.compile("[^a-z A-Z]");
Matcher matcher = pattern.matcher(s);
String number = matcher.replaceAll("");
return number;
}
}
ফলাফল
String is = one
Number is = 9196390097
ক্লাসের replaceAll()পদ্ধতি চেষ্টা করুন String।
বিটিডাব্লু হ'ল পদ্ধতি, রিটার্নের ধরণ এবং পরামিতি।
public String replaceAll(String regex,
String replacement)
উদাহরণ:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
এটি যে সমস্ত '' ^ '', '+', '-' rs অক্ষর আপনি মুছে ফেলতে চেয়েছিলেন তা মুছে ফেলা উচিত!
বিশেষ অক্ষর অপসারণ করতে
String t2 = "!@#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
আউটপুট হবে: abdd.
এটি পুরোপুরি কাজ করে।
String.replaceAll()জাভাতে পদ্ধতিটি ব্যবহার করুন ।
প্রতিস্থাপন সব আপনার সমস্যার জন্য যথেষ্ট ভাল হওয়া উচিত।
Stringক্লাসের জন্য ডকুমেন্টেশন পড়ার চেষ্টা করেছিলেন ? বিশেষত, 'রেজেক্স' শব্দটির সন্ধান করুন; কয়েকটি পদ্ধতি রয়েছে, এবং কিছুটা চিন্তাভাবনা আপনাকে কীভাবে এগিয়ে যেতে হবে তা বলা উচিত ... :)