Een tekenreeks splitsen met eventuele witruimtetekens als scheidingstekens

Welk regex-patroon moet ik doorgeven aan java.lang.String.split()om een string te splitsen in een array van substrings met gebruik van alle witruimtetekens (' ', '\t', '\n', enz.) als scheidingstekens?


Antwoord 1, autoriteit 100%

Iets in de trant van

myString.split("\\s+");

Hiermee worden alle spaties als scheidingsteken gegroepeerd.

Dus als ik de string heb:

"Hello[space character][tab character]World"

Dit zou de strings "Hello"en "World"moeten opleveren en de lege ruimte tussen de [space]en de [tab].

Zoals VonC al aangaf, zou de backslash moeten worden ontsnapt, omdat Java eerst zou proberen de tekenreeks te escapen naar een speciaal teken, en datzou sturen om te worden geparseerd. Wat je wilt, is de letterlijke "\s", wat betekent dat je "\\s"moet doorgeven. Het kan een beetje verwarrend zijn.

De \\sis gelijk aan [ \\t\\n\\x0B\\f\\r].


Antwoord 2, autoriteit 9%

In de meeste regex-dialecten zijn er een aantal handige karaktersamenvattingen die je voor dit soort dingen kunt gebruiken – dit zijn goede om te onthouden:

\W– Komt overeen met elk woordteken.

\W– Komt overeen met elk niet-woordteken.

\s– Komt overeen met elk witruimteteken.

\s– Komt overeen met alles behalve witruimtetekens.

\D– Komt overeen met elk cijfer.

\D– Komt overeen met alles behalve cijfers.

Een zoekopdracht naar ‘Regex Cheatsheets’ zou je moeten belonen met een heleboel nuttige samenvattingen.


Antwoord 3, autoriteit 7%

Om dit in Javascriptte laten werken, moest ik het volgende doen:

myString.split(/\s+/g)

Antwoord 4, autoriteit 4%

“\\s+” zou het moeten doen


Antwoord 5

Misschien heb je ook een UniCode vaste spatie xA0…

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking

Antwoord 6

String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");

Antwoord 7

Apache Commons Lang heeft een methode om een string te splitsen met spatietekens als scheidingstekens:

StringUtils.split("abc def")

http: //commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

Dit is misschien makkelijker te gebruiken dan een regex-patroon.


Antwoord 8

Omdat het een reguliere expressie is, en ik neem aan dat je ook geen niet-alfanumerieke tekens zoals komma’s, punten, enz. wilt die tussen spaties kunnen staan (bijv. “één , twee” zou [één][twee] moeten geven ]), zou het moeten zijn:

myString.split(/[\s\W]+/)

Antwoord 9

je kunt een string splitsen op regeleinde door de volgende instructie te gebruiken:

String textStr[] = yourString.split("\\r?\\n");

U kunt een string door witruimte splitsen met behulp van de volgende verklaring:

String textStr[] = yourString.split("\\s+");

10

String str = "Hello   World";
String res[] = str.split("\\s+");

11

Alles wat je nodig hebt, is om te splitsen met behulp van het speciale karakter van Java Ragex Engine,

en dat is- WhiteSpace Character

  • \dStaat voor een cijfer: [0-9]
  • \DStaat voor een niet-cijferig getal: [^0-9]
  • \sStaat voor een spatietekeninclusief [ \t\n\x0B\f\r]
  • \SGeeft een teken zonder witruimte aan als [^\s]
  • \vGeeft een verticaal witruimteteken weer als [\n\x0B\f\r\x85\u2028\u2029]
  • \VGeeft een niet-verticaal witruimteteken aan als [^\v]
  • \wGeeft een woordteken weer als [a-zA-Z_0-9]
  • \WGeeft een niet-woordteken weer als [^\w]

Hier is het belangrijksteom te onthouden dat de kleine letter \salle soorten spaties vertegenwoordigt, inclusief een enkele spatie [ ], tabtekens [ ]of iets dergelijks.

Dus, als je het probeert, zal zoiets als dit-

String theString = "Java<a space><a tab>Programming"
String []allParts = theString.split("\\s+");

U krijgt de gewenste uitvoer.


Enkele zeer nuttige links:


hoop, dit kan je het beste helpen !!!


12

Bestudeer deze code .. Veel succes

   import java.util.*;
class Demo{
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        System.out.print("Input String : ");
        String s1 = input.nextLine();   
        String[] tokens = s1.split("[\\s\\xA0]+");      
        System.out.println(tokens.length);      
        for(String s : tokens){
            System.out.println(s);
        } 
    }
}

Other episodes