/ / जावा रेगेक्स: String.split () के लिए कस्टम रेगेक्स बनाना - जावा, रेगेक्स, स्प्लिट

जावा रेगेक्स: स्ट्रिंग.split () के लिए कस्टम रेगेक्स बनाना - जावा, रेगेक्स, विभाजन

मुझे स्ट्रिंग को इस तरह से विभाजित करने की आवश्यकता है कि केवल इन विराम चिह्नों को अनदेखा किया जाना चाहिए:

(.), (,), (!) तथा (?)

तो अगर मैं इस स्ट्रिंग है:

String a = "I can"t split this string! Guys, can you help me? Thanks in advance."

मैं इस regex (है कि यह मदद नहीं कर रहा है):

String.split("[\p{Punct}\s]+");

और इससे उत्पादन होता है:

मैं कर सकते हैं टी विभाजित करें इस तार दोस्तों कर सकते हैं आप मदद मुझे धन्यवाद में अग्रिम

अगर आप गौर करें "टी कर सकते हैं विभाजित किया गया है क्योंकि एपोस्ट्रोफ को विराम चिह्न के रूप में दिया गया है, और मैं नहीं चाहता हूं।

उत्तर:

जवाब के लिए 2 № 1
  public static void main(String[] args)
{
String a = "I can"t split this string! Guys, can you help me? Thanks in advance.";

String[] splitted = a.split("[.,!?\s]+");
for (String s : splitted)
{
System.out.println(s);
}
}

हटाना \s यदि आप रिक्त स्थान से विभाजित नहीं करना चाहते हैं


जवाब के लिए 0 № 2
String.split(" |,|\?|!|\.")
OR
String.split("[\s\.,!?]+")

जवाब के लिए 0 № 3

दो लाइन अपडेट करने की जरूरत है

 String Str1 = "I can"t split this string! Guys, can you help me? Thanks in    advance.";
String[] splite = Str1.split("[.,!?\s]+");

जवाब के लिए 0 № 4

आप अन्य सभी विराम चिह्नों या स्थान पर बंटवारे के दौरान एकल उद्धरण पर विभाजन से बच सकते हैं:

String a = "I can"t split this string! Guys, can you help me? Thanks in advance."
String[] toks = a.split( "[\s\p{Punct}&&[^"]]+" );

जवाब के लिए 0 № 5

मैं एक और अलग तरीका खोजता हूं जो काम भी करता है।

String.split("[\?\!\.\,\s]+");