मैं विशेष वर्णों को हटाना चाहता हूं जैसे:
- + ^ . : ,
जावा का उपयोग करते हुए एक स्ट्रिंग से।
मैं विशेष वर्णों को हटाना चाहता हूं जैसे:
- + ^ . : ,
जावा का उपयोग करते हुए एक स्ट्रिंग से।
replaceAllउन्हें दूर करते हैं। यदि आपके पास अधिक गूढ़ आवश्यकताएं हैं, तो प्रश्न को संपादित करें। :)
replaceAllउनके लिए करें, या, एक पार्स करें स्ट्रिंग, उन वर्णों को जोड़ें जो आपके द्वारा किसी अन्य स्ट्रिंग को बाहर निकालने के लिए किए गए चार्ट नहीं हैं और अंत में आप जिस स्ट्रिंग पर लौट रहे हैं, उसके लिए a = = करें।
deleteChars.apply( fromString, "-+^.:," );- खोज यहाँ deleteChars
जवाबों:
यह इस बात पर निर्भर करता है कि आप विशेष पात्रों के रूप में क्या परिभाषित करते हैं, लेकिन कोशिश करें replaceAll(...):
String result = yourString.replaceAll("[-+.^:,]","");
ध्यान दें कि सूची में ^वर्ण पहले वाला नहीं होना चाहिए, क्योंकि तब आपको या तो इससे बचना होगा या इसका अर्थ होगा "कोई भी लेकिन ये वर्ण"।
एक और नोट: -चरित्र अन्यथा आप इसे से बचने के लिए होगा या यह एक सीमा को परिभाषित करेगा (उदाहरण के लिए सूची में पहले या पिछले एक होने की जरूरत है, :-,"श्रेणी में सभी पात्रों का मतलब होगा :करने के लिए ,)।
तो, क्रम स्थिरता रखने के लिए और नहीं चरित्र स्थिति पर निर्भर करते हैं, तो आप उन सभी अक्षर हैं जो नियमित अभिव्यक्ति में एक विशेष अर्थ नहीं होता बचने के लिए चाहते हो सकता है (निम्न सूची पूरी नहीं है, तो अन्य पात्रों के बारे में पता होना है की तरह (, {, $ आदि) :
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
यदि आप सभी विराम चिह्नों और प्रतीकों से छुटकारा पाना चाहते हैं, तो इस regex को आज़माएं: \p{P}\p{S}(ध्यान रखें कि जावा स्ट्रिंग्स में आपको बैक स्लैश से बचना होगा:) "\\p{P}\\p{S}"।
तीसरा तरीका कुछ इस तरह का हो सकता है, अगर आप ठीक से परिभाषित कर सकते हैं कि आपके तार में क्या छोड़ा जाना चाहिए:
String result = yourString.replaceAll("[^\\w\\s]","");
इसका मतलब है: हर उस चीज़ को बदलें जो एक शब्द चरित्र नहीं है (किसी भी मामले में az, 0-9 या _) या व्हाट्सएप।
संपादित करें: कृपया ध्यान दें कि कुछ अन्य पैटर्न हैं जो मददगार साबित हो सकते हैं। हालाँकि, मैं उन सभी को समझा नहीं सकता, इसलिए नियमित-expressions.info के संदर्भ अनुभाग पर एक नज़र डालें ।
यहाँ रे द्वारा सुझाए गए "परिभाषित वर्णों" दृष्टिकोण के लिए कम प्रतिबंधात्मक विकल्प है:
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
रेगेक्स सब कुछ से मेल खाता है जो किसी भी भाषा में एक अक्षर नहीं है और न ही एक विभाजक (व्हाट्सएप, लाइनब्रेक आदि) है। ध्यान दें कि आप उपयोग नहीं कर सकते हैं [\P{L}\P{Z}](ऊपरी स्थिति पी का मतलब है कि संपत्ति नहीं है), क्योंकि इसका मतलब होगा "सब कुछ जो एक पत्र नहीं है या व्हाट्सएप नहीं है", जो लगभग सब कुछ मेल खाता है, क्योंकि पत्र व्हाट्सएप और इसके विपरीत नहीं हैं।
यूनिकोड पर अतिरिक्त जानकारी
कुछ यूनिकोड वर्णों के अलग-अलग तरीकों से उन्हें सांकेतिक शब्दों में बदलना (एकल कोड बिंदु या कोड बिंदुओं के संयोजन) के कारण समस्याएँ उत्पन्न होती हैं। अधिक जानकारी के लिए कृपया regular-expressions.info देखें।
[\P{L}]
-चरित्र पहले या अंतिम होना चाहिए या उसे बचना चाहिए।
[^\\p{L}\\p{Z}]लगता है जर्मन Umlauts (ä, ö, ü) को खत्म करने के लिए (कम से कम यह मेरे लिए ऐसा करता है: /), इसलिए "रेगेक्स सब कुछ मेल खाता है जो किसी भी भाषा में एक अक्षर नहीं है" 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।
BTW यहाँ विधि, वापसी प्रकार और पैरामीटर है।
public String replaceAll(String regex,
String replacement)
उदाहरण:
String str = "Hello +-^ my + - friends ^ ^^-- ^^^ +!";
str = str.replaceAll("[-+^]*", "");
इसे सभी {'^', '+', '-'} वर्णों को हटा देना चाहिए जिन्हें आप हटाना चाहते थे!
विशेष चरित्र को हटाने के लिए
String t2 = "!@#$%^&*()-';,./?><+abdd";
t2 = t2.replaceAll("\\W+","");
आउटपुट होगा: abdd.
यह पूरी तरह से काम करता है।
String.replaceAll()जावा में विधि का उपयोग करें ।
आपकी समस्या के लिए प्रतिस्थापन पर्याप्त होना चाहिए।
Stringकक्षा के लिए प्रलेखन पढ़ने की कोशिश की ? विशेष रूप से, 'रेगेक्स' शब्द की तलाश करें; कुछ तरीके हैं, और थोड़ा सा विचार आपको आगे बढ़ने का तरीका बताना चाहिए ... :)