String str = "hello  there, what are   you doing";
System.out.println(str.replaceAll("\\s{2,}", "?"));

Wyjście: Witaj? Tam, co robisz

Oczekiwany wyjście: Witaj? Jesteś tam, co robisz?

-1
krazy Koder 15 kwiecień 2021, 21:29

2 odpowiedzi

Najlepsza odpowiedź

Jedna linia Regex, która wykorzystuje zastępuje białe znaki za pomocą wyglądu do przodu (?=\s) i spojrzenie za (?<=\s) byłoby:

String str = "hello  there, what are   you doing      here";
System.out.println(str.replaceAll("(\s(?=\s)|(?<=\s)\s)", "?"));
=>
hello??there, what are???you doing??????here

Tak więc powyższe pasuje do białego znaku, a następnie białe znaki lub biała przestrzeń poprzedzona białe znaki i zastąp to za pomocą "?".

0
DuncG 16 kwiecień 2021, 15:42

Spróbuj tego.

Pattern pat = Pattern.compile("\\s{2,}");
String str = "hello  there, what are   you doing";
System.out.println(pat.matcher(str).replaceAll(m -> "?".repeat(m.group().length())));

Wynik:

hello??there, what are???you doing
1
saka1029 15 kwiecień 2021, 18:38