मैंने इसका उपयोग करने की कोशिश की, लेकिन काम नहीं किया-
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]
चरित्र रेंज AZ / az में ही नहीं होने वाले वर्णों को बदल देगा। इसका मतलब है कि विशेष वर्ण जैसे é
, ß
आदि या सिरिलिक वर्ण और ऐसे हटा दिए जाएंगे।
यदि इन वर्णों के प्रतिस्थापन के बजाय पूर्व-निर्धारित वर्ण वर्गों का उपयोग नहीं करना चाहते हैं:
str.replaceAll("[^\\p{IsAlphabetic}\\p{IsDigit}]", "");
पुनश्च: \p{Alnum}
इस प्रभाव को प्राप्त नहीं करता है, यह उसी के रूप में कार्य करता है [A-Za-z0-9]
।
[^\\p{IsAlphabetic}\\p{IsDigit}]
अच्छा काम करता है।
{IsDigit}
मेरे लिए काम नहीं {Digit}
करता है और यह है कि मैं Android पर यह कोशिश कर रहा हूँ। और Android 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]
जब^
वर्गाकार कोष्ठक कोष्ठक के अंदर पहले वर्ण के रूप में प्रकट होता है, तो यह पैटर्न को नकार देता है। यह पैटर्न किसी भी वर्ण को a या b या c को छोड़कर मेल खाता है
कीवर्ड को दो फ़ंक्शन के रूप में देख रहे हैं:
[(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 ध्वज का उपयोग प्रदर्शन दंड पर लागू हो सकता है (इस ध्वज का javadoc देखें)
सरल विधि:
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]", ""));
}
आउटपुट: क्लैमाइडियासपीआईजीजीआईएमआईजीएएएबीएस ६००६
Github: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
अमरूद के उपयोग से आप विभिन्न प्रकार के मानदंड आसानी से जोड़ सकते हैं। अपने विशिष्ट समाधान के लिए आप इसका उपयोग कर सकते हैं:
value = CharMatcher.inRange('0', '9')
.or(CharMatcher.inRange('a', 'z')
.or(CharMatcher.inRange('A', 'Z'))).retainFrom(value)