আমি এটি ব্যবহার করার চেষ্টা করেছি কিন্তু কার্যকর হয়নি -
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
আমি এটি ব্যবহার করার চেষ্টা করেছি কিন্তু কার্যকর হয়নি -
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
উত্তর:
ব্যবহার [^A-Za-z0-9]
।
দ্রষ্টব্য: স্থানটি সরানো হয়েছে যেহেতু এটি সাধারণত অক্ষর হিসাবে বিবেচিত হয় না।
চেষ্টা
return value.replaceAll("[^A-Za-z0-9]", "");
অথবা
return value.replaceAll("[\\W]|_", "");
return value.replaceAll("\\W", "");
আপনার সচেতন হওয়া উচিত যে [^a-zA-Z]
অক্ষরগুলি এজেড / এজেডের অক্ষরের মধ্যে নেই range তার মানে বিশেষ অক্ষর পছন্দ é
, ß
ইত্যাদি বা সিরিলিক অক্ষর এবং এই ধরনের সরানো হবে।
যদি এই অক্ষরগুলির প্রতিস্থাপন না হয় তবে পরিবর্তে প্রাক-সংজ্ঞায়িত চরিত্রের ক্লাসগুলি ব্যবহার করতে চান:
str.replaceAll("[^\\p{IsAlphabetic}\\p{IsDigit}]", "");
পিএস: \p{Alnum}
এই প্রভাবটি অর্জন করে না, এটি একই হিসাবে কাজ করে [A-Za-z0-9]
।
[^\\p{IsAlphabetic}\\p{IsDigit}]
ভাল কাজ করে.
{IsDigit}
আমার পক্ষে কাজ করে না এবং {Digit}
এটি হ'ল আমি এটি অ্যান্ড্রয়েডে চেষ্টা করছি। এবং অ্যান্ড্রয়েড UNICODE_CHARACTER_CLASS
ডিফল্টভাবে চালু হয়েছে। ছাড়পত্রের জন্য ধন্যবাদ
আপনি এই সরল রেজেক্সও চেষ্টা করতে পারেন:
str = str.replaceAll("\\P{Alnum}", "");
str.replaceAll("[^\\p{Alnum}\\s]", "")
\\p{Alnum}\\p{Space}
।
ফাইল নাম তৈরি করার জন্য আমি এই পদ্ধতিটি তৈরি করেছি:
public static String safeChar(String input)
{
char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();
char[] charArray = input.toString().toCharArray();
StringBuilder result = new StringBuilder();
for (char c : charArray)
{
for (char a : allowed)
{
if(c==a) result.append(a);
}
}
return result.toString();
}
value.replaceAll("[^A-Za-z0-9]", "")
[^abc]
^
বর্গাকার বন্ধনীগুলির মধ্যে যখন কোনও ক্যারেট প্রথম চরিত্র হিসাবে উপস্থিত হয়, তখন এটি প্যাটার্নটিকে তুচ্ছ করে। এই প্যাটার্নটি একটি বা বি বা সি ব্যতীত অন্য কোনও চরিত্রের সাথে মেলে।
মূল শব্দটিকে দুটি ফাংশন হিসাবে দেখছেন:
[(Pattern)] = match(Pattern)
[^(Pattern)] = notMatch(Pattern)
তাছাড়া একটি নিদর্শন সম্পর্কিত:
A-Z = all characters included from A to Z
a-z = all characters included from a to z
0=9 = all characters included from 0 to 9
অতএব এটি প্যাটার্নে অন্তর্ভুক্ত সমস্ত চরকে বিকল্প হিসাবে গ্রহণ করবে
আপনি যদি উদাহরণস্বরূপ জার্মান উমলৌটের মতো অ্যাস্কি অক্ষরের সাথে সম্পর্কিত না হয় এমন আলফানিউমারিক অক্ষরগুলিকেও অনুমতি দিতে চান তবে নীচের সমাধানটি ব্যবহার করে বিবেচনা করতে পারেন:
String value = "your value";
// this could be placed as a static final constant, so the compiling is only done once
Pattern pattern = Pattern.compile("[^\\w]", Pattern.UNICODE_CHARACTER_CLASS);
value = pattern.matcher(value).replaceAll("");
দয়া করে নোট করুন যে UNICODE_CHARACTER_CLASS পতাকা ব্যবহারের ক্ষেত্রে পারফরম্যান্স পেনাল্টি চাপিয়ে দেওয়া হতে পারে (এই পতাকার জাভডোক দেখুন)
সাধারণ পদ্ধতি:
public boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
public String normalizeOnlyLettersNumbers(String str) {
if (!isBlank(str)) {
return str.replaceAll("[^\\p{L}\\p{Nd}]+", "");
} else {
return "";
}
}
public static void main(String[] args) {
String value = " Chlamydia_spp. IgG, IgM & IgA Abs (8006) ";
System.out.println(value.replaceAll("[^A-Za-z0-9]", ""));
}
আউটপুট: ক্ল্যামিডিয়াস্পআইজিজিআইজিএমআইজিএএবিএস 800
গিথুব: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
পেয়ারা এর CharMatcher একটি সংক্ষিপ্ত সমাধান প্রদান করে:
output = CharMatcher.javaLetterOrDigit().retainFrom(input);