मेरी स्ट्रिंग: BByTTheWay। मैं स्ट्रिंग को विभाजित करना चाहता हूं as B By T The Way BByTheWay। इसका मतलब है कि मैं स्ट्रिंग को विभाजित करना चाहता हूं यदि मुझे कोई बड़ा अक्षर मिलता है और मुख्य स्ट्रिंग को अंतिम रूप में रखता है। जहाँ तक मैंने जावा में कोशिश की:

public String breakWord(String fileAsString) throws FileNotFoundException, IOException {

    String allWord = "";
    String allmethod = "";
    String[] splitString = fileAsString.split(" ");
    for (int i = 0; i < splitString.length; i++) {
        String k = splitString[i].replaceAll("([A-Z])(?![A-Z])", " $1").trim();
        allWord = k.concat(" " + splitString[i]);
        allWord = Arrays.stream(allWord.split("\\s+")).distinct().collect(Collectors.joining(" "));
        allmethod = allmethod + " " + allWord;
        //  System.out.print(allmethod);
    }
    return allmethod;

}

यह मुझे आउटपुट देता है: B ByT The Way BByTTheWay । मुझे लगता है कि स्टैक ओवरफ्लो समुदाय इसे हल करने में मेरी सहायता करता है।

2
Sanzida 4 सितंबर 2021, 16:32

2 जवाब

सबसे बढ़िया उत्तर

आप इस कोड का उपयोग कर सकते हैं:

कोड 1

String s = "BByTTheWay";
Pattern p = Pattern.compile("\\p{Lu}\\p{Ll}*");

String out = p.matcher(s)
     .results()
     .map(MatchResult::group)
     .collect(Collectors.joining(" "))
     + " " + s;

//=> "B By T The Way BByTTheWay"

RegEx \\p{Lu}\\p{Ll}* किसी भी यूनिकोड अपरकेस अक्षर से मेल खाता है जिसके बाद 0 या अधिक लोअरकेस अक्षर होते हैं।

CODE DEMO


या String.split समान रेगेक्स का उपयोग करें और बाद में इसमें शामिल हों:

कोड 2

String out = Arrays.stream(s.split("(?=\\p{Lu})"))
    
.collect(Collectors.joining(" ")) + " " + s;
//=> "B By T The Way BByTTheWay"
2
anubhava 4 सितंबर 2021, 14:06

उपयोग

String s = "BByTTheWay";
Pattern p = Pattern.compile("[A-Z][a-z]*");
Matcher m = p.matcher(s);
String r = "";
while (m.find()) {
    r = r + m.group(0) + " ";
}
System.out.println(r + s);

देखें Java प्रूफ

परिणाम: B By T The Way BByTTheWay

व्याख्या

--------------------------------------------------------------------------------
  [A-Z]                    any character of: 'A' to 'Z'
--------------------------------------------------------------------------------
  [a-z]*                   any character of: 'a' to 'z' (0 or more
                           times (matching the most amount possible))
1
Ryszard Czech 4 सितंबर 2021, 20:46