আমার প্রচুর বিশেষ অক্ষর রয়েছে string আমি এই সমস্তগুলি মুছে ফেলতে চাই, তবে বর্ণানুক্রমিক অক্ষর রাখতে চাই।
কিভাবে আমি এটি করতে পারব?
উত্তর:
এটি আপনার অর্থের উপর নির্ভর করে। আপনি যদি এগুলি থেকে মুক্তি পেতে চান তবে এটি করুন:
(আপডেট: স্পষ্টত আপনি অঙ্কগুলিও বজায় রাখতে চান, সে ক্ষেত্রে দ্বিতীয় লাইনটি ব্যবহার করুন)
String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
বা সমতুল্য:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(এগুলি সমস্তই রেজেক্স প্যাটার্নটি পূর্ববর্তী করে এবং একটি ধ্রুবক হিসাবে এটি সঞ্চয় করে উল্লেখযোগ্যভাবে উন্নতি করা যেতে পারে)
বা, পেয়ারা সহ :
private static final CharMatcher ALNUM =
CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);
তবে আপনি যদি উচ্চারণযুক্ত চরিত্রগুলিকে এখনও বোধগম্য কিছুতে পরিণত করতে চান যা এখনও অ্যাসিআই হয় তবে এই প্রশ্নগুলি দেখুন:
আমি এটি ব্যবহার করছি।
s = s.replaceAll("\\W", "");
এটি স্ট্রিং থেকে সমস্ত বিশেষ অক্ষর প্রতিস্থাপন করে।
এখানে
\ ডাব্লু: [a-zA-Z_0-9] এর জন্য একটি শব্দ অক্ষর
\ ডাব্লু: একটি শব্দহীন চরিত্র
কোনও বিশেষ অক্ষর দ্বারা প্রতিস্থাপন করুন
replaceAll("\\your special character","new character");
উদাহরণস্বরূপ: * সমস্ত ঘটনাকে সাদা স্থানের সাথে প্রতিস্থাপন করতে
replaceAll("\\*","");
* এই বিবৃতিটি একবারে কেবল এক ধরণের বিশেষ চরিত্রকে প্রতিস্থাপন করতে পারে
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
এখানে স্থান, কমা এবং এম্পারস্যান্ড বাদে সমস্ত বিশেষ অক্ষর প্রতিস্থাপন করা হয়েছে। আপনি নিম্নলিখিত নিয়মিত অভিব্যক্তি দ্বারা স্থান, কমা এবং এম্পারস্যান্ড বাদ দিতে পারেন।
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
ইনপুটটি স্ট্রিং যেখানে অক্ষরগুলি প্রতিস্থাপন করা দরকার।
আন্দ্রেজে ডয়েলের উত্তরের উদাহরণ অনুসরণ করে , আমি মনে করি যে আরও ভাল সমাধান ব্যবহার করা উচিত org.apache.commons.lang3.StringUtils.stripAccents():
package bla.bla.utility;
import org.apache.commons.lang3.StringUtils;
public class UriUtility {
public static String normalizeUri(String s) {
String r = StringUtils.stripAccents(s);
r = r.replace(" ", "_");
r = r.replaceAll("[^\\.A-Za-z0-9_]", "");
return r;
}
}
আপনি সমস্ত বিশেষ অক্ষর সন্ধান করতে স্ট্রিংগুলিতে বেসিক নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন বা ব্যবহারকারীর সংজ্ঞায়িত স্ট্রিং অনুসন্ধান / সংশোধন / মুছতে প্যাটার্ন এবং ম্যাচার ক্লাস ব্যবহার করতে পারেন। এই লিঙ্কটিতে নিয়মিত এক্সপ্রেশনগুলির জন্য কিছু সহজ এবং সহজে বোঝার উদাহরণ রয়েছে: http://www.vogella.de/articles/JavaRegularExpressions/article.html
আপনি উইন্ডো পিসিতে চরিত্রচিত্রের সরঞ্জাম থেকে সেই জাঙ্ক চরিত্রের জন্য ইউনিকোড পেতে পারেন এবং কপিরাইট প্রতীকের জন্য eg u যেমন \ u00a9 যুক্ত করতে পারেন। এখন আপনি সেই স্ট্রিংটি সেই নির্দিষ্ট জাঙ্ক ক্যাচারাকারের সাহায্যে ব্যবহার করতে পারেন, কোনও জাঙ্ক চরিত্র অপসারণ করবেন না তবে যথাযথ ইউনিকোড দিয়ে প্রতিস্থাপন করুন।
স্পেসগুলির জন্য এই ধরণটি "[^Z AZ 0-9]" ব্যবহার করুন
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();