Использование slicing
Пример:
nums = [1, 2, 3, 4, 5, 6, 7, 8]
nums = [str(i) for i in nums]
print( ";".join(",".join(nums[i:i+2]) for i in range(0, len(nums), 2)) )
Выход:
1,2;3,4;5,6;7,8
Много корректных ответов, обеспеченный до сих пор и я вижу партию upvotes. Однако упомянутые пути будут работать, но не действительно оптимизированные или не действительно читаемые. Я недавно столкнулся с решением, которое будет любить каждый разработчик.
String nameWithProperSpacing = StringUtils.normalizeSpace( stringWithLotOfSpaces );
Вы сделаны. Это - читаемое решение.
В Kotlin это было бы похоже на это
val input = "\n\n\n a string with many spaces, \n"
val cleanedInput = input.trim().replace(Regex("(\\s)+"), " ")
Строковый Токенизатор может использоваться
String str = " hello there ";
StringTokenizer stknzr = new StringTokenizer(str, " ");
StringBuffer sb = new StringBuffer();
while(stknzr.hasMoreElements())
{
sb.append(stknzr.nextElement()).append(" ");
}
System.out.println(sb.toString().trim());
Попробуйте следующее:
String after = before.trim().replaceAll(" +", " ");
String.trim ()
trim ()
regex Это также можно сделать с помощью всего одного replaceAll
, но это гораздо менее читабельно чем решение trim ()
. Тем не менее, он представлен здесь только для того, чтобы показать, что может делать регулярное выражение:
String[] tests = {
" x ", // [x]
" 1 2 3 ", // [1 2 3]
"", // []
" ", // []
};
for (String test : tests) {
System.out.format("[%s]%n",
test.replaceAll("^ +| +$|( )+", "$1")
);
}
Есть 3 альтернативы:
^ _ +
: любая последовательность пробелов в начале строки
$ 1
, который захватывает пустую строку _ + $
: любая последовательность пробелов в конце строки
$ 1
, который захватывает пустую строку (_) +
: любая последовательность пробелов, которая не соответствует ни одному из вышеперечисленных, то есть посередине.
$ 1
, который захватывает один пробел See String.replaceAll
.
Используйте regex "\s"
и замените на " "
.
Затем используйте String.trim
.
Чтобы убрать пробелы в начале и в конце строки, используйте метод String#trim()
. А затем используйте ваш mytext.replaceAll("( )+", " ")
.
Сначала можно использовать String.trim()
, а затем применить к результату команду regex replace.