Jak podzielić ciąg znaków z białymi znakami jako ogranicznikami?
Jaki wzorzec regex musi przekazać do metody java.lang.String.split()
, aby podzielić łańcuch na tablicę podłańcuchów używając wszystkich białych znaków (' ', '\t', '\n', itd.) jako ogranicznik?
12 answers
Coś w linii
myString.split("\\s+");
Grupuje wszystkie białe spacje jako ogranicznik.
Więc jeśli mam ciąg:
"Hello[space][tab]World"
Powinno to dawać ciągi "Hello"
i "World"
i pomijać pustą przestrzeń pomiędzy [space]
i [tab]
.
Jak zauważył VonC, odwrotny ukośnik powinien być unikany, ponieważ Java najpierw spróbuje uciec od łańcucha znaków do znaku specjalnego i wysłać ten do przetworzenia. Czego chcesz, to literalne "\s"
, które oznacza, że musisz zdać "\\s"
. To może być trochę mylące.
\\s
jest równoważne [ \\t\\n\\x0B\\f\\r]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-15 19:09:12
W większości dialektów regex istnieje zestaw wygodnych podsumowań znaków, których możesz użyć do tego rodzaju rzeczy - są to dobre do zapamiętania:
\w
- pasuje do każdego znaku słowa.
\W
- Pasuje do dowolnych znaków bez słowa.
\s
- pasuje do każdego znaku z białą spacją.
\S
- Pasuje do wszystkiego, oprócz białych znaków.
\d
- pasuje do każdej cyfry.
\D
- pasuje do wszystkiego oprócz cyfr.
A search for " Regex Cheatsheets " powinny nagrodzić cię wieloma przydatnymi podsumowaniami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-12 05:19:08
Aby to działało w Javascript, musiałem wykonać następujące czynności:
myString.split(/\s+/g)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 16:17:25
"\\S+ " powinno zadziałać
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-22 11:29:25
Możesz również mieć niełamliwą spację UniCode xA0...
String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-09 03:29:23
String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 18:54:35
Apache Commons Lang ma metodę dzielenia ciągu znaków białymi znakami jako ogranicznikami:
StringUtils.split("abc def")
To może być łatwiejsze w użyciu niż wzór regex.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-01 17:10:18
Ponieważ jest to wyrażenie regularne i zakładam, że u również nie chce znaków nie alfanumerycznych, takich jak przecinki, kropki itp., które mogłyby być otoczone spacjami( np. "jeden, dwa" powinno dawać [jeden] [dwa]), powinno być:
myString.split(/[\s\W]+/)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-17 08:34:56
Możesz podzielić łańcuch po podziale linii, używając następującej instrukcji:
String textStr[] = yourString.split("\\r?\\n");
Można podzielić ciąg znaków na białe znaki, używając następującej instrukcji:
String textStr[] = yourString.split("\\s+");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-01 13:40:50
String str = "Hello World";
String res[] = str.split("\\s+");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-02 11:36:08
Dziwi mnie, że nikt nie wspomniał o String.split() bez parametrów. Czy nie po to jest stworzony? jak w:
"abc def ghi".split()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 22:05:23
Przestudiuj ten kod.. powodzenia
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);
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 14:08:00