powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Убираем пробелы в начале и конце строки, дак как все-таки?
54 сообщений из 54, показаны все 3 страниц
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247897
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парсил я как-то строки, которые из экселя в форму вставляли, но парсил всегда целиком, ничего не меняя.
А тут подкинул мне знакомый часть задачи из тестового задания, говорит, как убрать пробелы из строки, только в начале и только в конце?
что лучше, работать со строками через стандартные вещи или регексы использовать? Я имею ввиду для скорости парсинга.

Код: java
1.
String dataStr = "      Возмем, для примера вот эту самую строку  ";



Можно только на словах, типа берем трим или еще что-то, указываем то-то, то-то, без примера кода, то есть. А может уже есть какие-то более интересные библиотеки для работы со строковыми данными?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247905
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicтолько в начале и только в конце?
только в начале или только в конце?

Nixicчто лучше, работать со строками через стандартные вещи или регексы использовать? Я имею ввиду для скорости парсинга.

Чхать на скорость, главное чтобы код был понятным.

NixicМожно только на словах, типа берем трим или еще что-то, указываем то-то, то-то, без примера кода, то есть. А может уже есть

Взять String.trim() и написать на его основе свой метод.

Nixicкакие-то более интересные библиотеки для работы со строковыми данными?
В Apache Commons почему-то такого метода нет. Есть в Spring.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247917
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в начале и в конце. С обоих краев. :)
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247922
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicИ в начале и в конце. С обоих краев. :)
Sting.trim()? Не?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247946
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

разбить строку на массив слов по пробелам )) потом заново из слов собрать ))
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247951
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTразбить строку на массив слов по пробелам )) потом заново из слов собрать ))
Автор не уточнил с обоих краёв чего он собрался убирать. Но судя по примеру, меж слов нет лишних пробелов.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247961
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

очередное дибильное задание с собеседования по ходу.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247963
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixicкак убрать пробелы из строки, только в начале и только в конце?
дык, trim()
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247964
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTочередное дибильное задание с собеседования по ходу.
Плюс "испорченный телефон".
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39247988
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic, как вы дошли до жизни такой?

Интересно, каким образом вышло так, что человек с 1365 сообщениями (причем, 79% в ветке java) не знает что такое trim() ?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248008
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicПарсил я как-то строки, которые из экселя в форму вставляли, но парсил всегда целиком, ничего не меняя.
А тут подкинул мне знакомый часть задачи из тестового задания, говорит, как убрать пробелы из строки, только в начале и только в конце?
что лучше, работать со строками через стандартные вещи или регексы использовать? Я имею ввиду для скорости парсинга.

Код: java
1.
String dataStr = "      Возмем, для примера вот эту самую строку  ";



Можно только на словах, типа берем трим или еще что-то, указываем то-то, то-то, без примера кода, то есть. А может уже есть какие-то более интересные библиотеки для работы со строковыми данными?

Пример решения задачи для trim в начале и конце строки.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
    private static String baseToString(String value) {
        return value == null ? "" : value;
    }

    private static int charsLeftIndex(final String string, final String chars) {
        int index = 0;
        final int length = string.length();
        while (index < length && chars.indexOf(string.charAt(index)) > -1) {
            index += 1;
        }
        return index == length ? -1 : index;
    }

    public static String trimStart(final String string, final String chars) {
        final String localString = baseToString(string);
        if (localString.isEmpty()) {
            return localString;
        }
        final String localChars;
        if (chars == null) {
            localChars = " ";
        } else {
            localChars = chars;
        }
        final int leftIndex = charsLeftIndex(localString, localChars);
        return leftIndex > -1 ? localString.substring(leftIndex, localString.length()) : localString;
    }

    private static int charsRightIndex(final String string, final String chars) {
        int index = string.length() - 1;
        while (index >= 0 && chars.indexOf(string.charAt(index)) > -1) {
            index -= 1;
        }
        return index;
    }

    public static String trimEnd(final String string, final String chars) {
        final String localString = baseToString(string);
        if (localString.isEmpty()) {
            return localString;
        }
        final String localChars;
        if (chars == null) {
            localChars = " ";
        } else {
            localChars = chars;
        }
        final int rightIndex = charsRightIndex(localString, localChars);
        return rightIndex > -1 ? localString.substring(0, rightIndex + 1) : localString;
    }



Можно подключить готовую библиотеку с этим методом undercore-lodash .

С уважением, Валентин
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248016
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня было другое из 12345 сложить 1+2+3+4+5 рекурсией ))

я сказал зачем рекурсия и сделал так:
for(char c: "12345".toCharArray()) z=z+Integer.parseInt(c+"")



у чувака на том конце провода первый вопрос а зачем '+""'? )))
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248020
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Код: java
1.
2.
3.
4.
        
String digits = "12345";
System.out.println(digits.chars().map(i -> i - '0').sum());
System.out.println(digits.chars().sum() - digits.length() * '0');
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248027
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTу чувака на том конце провода первый вопрос а зачем '+""'? )))
Вот чтобы не пугать таких, надо писать хотя бы
Код: java
1.
Character.digit(c, 10);
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248031
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин,
Вы сделали мой день.

это задача на две строчки!

StringBuilder sb = ....
for(String st : someStr.split(" ")) sb.append(st).append(" ");
sb.deleteCharAt(sb.lasstIndexOf(sb.toString()));
кажется так. может напутал что но суть ясна.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248033
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczandreykaTу чувака на том конце провода первый вопрос а зачем '+""'? )))
Вот чтобы не пугать таких, надо писать хотя бы
Код: java
1.
Character.digit(c, 10);


меня туда всё-равно не взяли. сказали что в активе нет мегапроектов с крутой загрузкой.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248040
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, в коде надо условие перед аппендом добавить if(!st.equals(""))
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248060
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача на подсчет скобочек в строке более интересна.

Мдя... слабеет нынче собеседование.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248076
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А что с скобками . Первое что в голову приходит делать ++ когда откр и -- когда закр. Если меньше 0 то ошибка. Если 0 то все верно.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248082
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTmayton,

А что с скобками . Первое что в голову приходит делать ++ когда откр и -- когда закр. Если меньше 0 то ошибка. Если 0 то все верно.
Лет 10 назад это было..

В изначальной формулировке она звучала как - проверка корректности выражения со скобками.
И лично я ее решения не знал. И мне пришлось минут 5-10 пописать различные варианты
проверок и краевые случаи чтобы к этому подойти.

А у тебя сколько времени бы это заняло?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248086
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTПервое что в голову приходит делать ++ когда откр и -- когда закр. Если меньше 0 то ошибка. Если 0 то все верно.
Код: java
1.
")("
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248090
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczandreykaTПервое что в голову приходит делать ++ когда откр и -- когда закр. Если меньше 0 то ошибка. Если 0 то все верно.
Код: java
1.
")("


и что? если это в начале будет строки то будет -- и -1 а значит ошибка. если посередине - это умножение. если мне память не изменяет из школьного курса алгебры
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248091
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonandreykaTmayton,

А что с скобками . Первое что в голову приходит делать ++ когда откр и -- когда закр. Если меньше 0 то ошибка. Если 0 то все верно.
Лет 10 назад это было..

В изначальной формулировке она звучала как - проверка корректности выражения со скобками.
И лично я ее решения не знал. И мне пришлось минут 5-10 пописать различные варианты
проверок и краевые случаи чтобы к этому подойти.

А у тебя сколько времени бы это заняло?
если в спокойной обстановке? если на тебя 2-3 лба в 6 глаз зырят и говорят "решай" то хз. У меня в такие моменты ощущение будто я стою писаю под деревом, а на меня 3 мужика смотрят, причем не со спины. :) Стеснительный я.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248092
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTи что? если это в начале будет строки то будет -- и -1 а значит ошибка. если посередине - это умножение. если мне память не изменяет из школьного курса алгебры
Ну, ты не указал, что одно условие на каждую итерацию, а второе на результат.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248099
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин, String.trim, в отличии от вашего метода, кроме пробела удаляет еще и \t,\n и т.д.(33 символа).
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248100
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczandreykaTи что? если это в начале будет строки то будет -- и -1 а значит ошибка. если посередине - это умножение. если мне память не изменяет из школьного курса алгебры
Ну, ты не указал, что одно условие на каждую итерацию, а второе на результат.
а.. ну как бы да я это и подразумевал :) вначале у меня была мысль делать два "стека" ) в один плюсовать ( в другой ) а потом стеки отнимать друг от друга. :)
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248113
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Совершенно верно. Это сейчас. В уютном кресле вы можете рассуждать.

А когда на твой скрин смотрят два тим-лида и ждут - ощущения совсем другие.
Я считал что знаю большинство ловушек на собеседовании - но это не так.
Всегда найдется хитрая задчка которую тебе сходу не решить. И дело не в знаниях.
А скорее в смекалке. Здесь к примеру знания ПОЛИЗов и парсеров только мешали.
По сути - глубина скобок должна быть неотрицательна. Это инвариант. Но к нему
надо еще подойти.

Вот... после этого топика вы все уже умные и знаете этот пустяк...
Но тим лид придумает что-то для вас новое зойчата....
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248120
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот... после этого топика вы все уже умные и знаете этот пустяк...

Ну, тема скобок подробно разбирается в институте в занятиях на тему компиляторов.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248122
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Та я и не спорю В стрессовой ситуации даже элементарные вопросы могут в ступор вводить. Но только вот незадача. мы не космонавты и в стрессе работать не должны и не обязаны уметь. Правда, 25-тилентему лиду, который сам никогда реальных собесов может и не проходил этого не объяснить.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248124
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
..он такой крутой клёвый напыщенный, сидит порабощать и угнетать новопришедших. а посади его на твое место - всё может быть даже хуже чем с тобой.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248130
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczmaytonВот... после этого топика вы все уже умные и знаете этот пустяк...

Ну, тема скобок подробно разбирается в институте в занятиях на тему компиляторов.
у меня образование техническое, но к айти мало относится - кровавая и беспощадная физика. и мы проходили максимум базис.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самые хитрые вопросы - все равно не про школьную программу. Иногда от вас ждут швыряния
барометра из окна для замера высоты. Иногда - рассуждений на тему что делать если ты
попал в блэндер.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248428
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

бред какой то. мне кажется что это тебя так тролят. и может стоит потролить в ответ? типа. а какого цвета блендер, а из какого материала лезвия, с какой скоростью крутятся? а кто кнопку нажмет?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248434
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСамые хитрые вопросы - все равно не про школьную программу. Иногда от вас ждут швыряния
барометра из окна для замера высоты....
Но ведь решений задачи много. Главное выбрать из них лучшее )))

«привяжите к барометру шнурок и, раскачивая его, как маятник, определите величину гравитации у основания здания и на его крыше. Из разницы между этими величинами, в принципе, можно вычислить высоту здания»
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248436
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
среди множества прочих способов решения проблемы лучшим, пожалуй, является такой: возьмите барометр с собой, найдите управляющего зданием и скажите ему: «Господин управляющий, у меня есть замечательный барометр. Он ваш, если вы скажете мне высоту этого здания». )))
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248437
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж эти программисты ...
Радиус земли превышает 6000 километров. И был измерен ещё в античные времена (с погрешностью в пределах 20 процентов).
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248447
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не программисты. Это, по слухам, Нильс Бор экзаменаторов по физике троллил )))
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248451
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В "Физики шутят" / "Физики продолжают шутить" много приколов - понятных и не очень.
Программирование-то тут при чём?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВ "Физики шутят" / "Физики продолжают шутить" много приколов - понятных и не очень.
Программирование-то тут при чём?
Это я в качестве примера привожу. А задачка про блэндер - из собеседований в Google.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248469
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokNixic, как вы дошли до жизни такой?

Интересно, каким образом вышло так, что человек с 1365 сообщениями (причем, 79% в ветке java) не знает что такое trim() ?
А чтобы фигачить бины и запросы в хибере знать про trim совсем не обязательно :-)
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248476
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... trim() это как-бе основной API. И вообще суть претензий не в том знает чел
или нет встроенные средства. А понимает ли он как "инженер" что нужно решать
задачи по философии KISS, YAGNI e.t.c.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248490
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicчто лучше, работать со строками через стандартные вещи или регексы использовать?Ну, раз не хотите использовать стандартные вещи типа trim() , тогда регексы:
Код: java
1.
dataStr.replaceAll("^\\s+|\\s+$", "")
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248494
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

О Боже. Всегда боялся регекспов Слушайте, расскажите, как вы в них разбираетесь? Помню я учил пэху, а там доатсточномного чего на регекспах. Вроде разбираться научился, понимать. Прошло пару лет. И смотрю на это и ужасаюсь. как вы это понимаете? Или у меня память как у рыбки?
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248500
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

По началу - да, OutOf Мозг Exception.
Решение:
Чаще парсить строки/тексты/страницы. Искать примеры.
И со временем можно научиться понимать и "мыслить" регекс-паттернами (:
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248504
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясняю с учебной целью, как надо делать. Поскольку задача сложная, надо разделить её на подзадачи:
1. Обкусывание пробелов в начале строки.
2. Обкусывание пробелов в конце строки.

Хорошо подумав, соображаем, что подзадачу (2) можно свести к (1). Для этого надо перевернуть строку, обкусить пробелы в начале, и снова перевернуть строку.
Теперь задача уже достаточно упрощена, и можно запрограммировать:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class TrimTest {

	public static void main(String[] args) {
		String s = "  Отсюда надо убрать пробелы в начале и в конце   ";
		//Эта строка не должна оканчиваться пробелами:
		final String end = "Йа конец."; 
		
		//убираем пробелы в начале
		StringBuilder sb = new StringBuilder (s);
		s = sb.append(end).toString().trim();
		
		//переворачиваем строку
		sb.setLength(0);
		sb.append(s).reverse();
		
		//убираем пробелы в конце
		s = sb.toString().substring(end.length()).trim();
		
		//опять переворачиваем строку
		sb.setLength(0);
		s = sb.append(s).reverse().toString();
		
		System.out.println ("\"" + s + "\"");
	}

}



Результат:

"Отсюда надо убрать пробелы в начале и в конце"
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248508
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan M,

сорри конечно, но самый классный пока что у Усмана, а самый брутальный у Валентина
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248517
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для потоковой обработки текста (напр., чтение из файла) лучше использовать java.util.Scanner :
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try (java.util.Scanner scanner = new java.util.Scanner(dataStr)) {
    scanner.useDelimiter("\\s+");
    while (scanner.hasNext()) {
        System.out.print(scanner.next());
        if (scanner.hasNext()) {
            System.out.print(' ');
        }
    }
    System.out.println();
}
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39248596
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirchabapokNixic, как вы дошли до жизни такой?

Интересно, каким образом вышло так, что человек с 1365 сообщениями (причем, 79% в ветке java) не знает что такое trim() ?
А чтобы фигачить бины и запросы в хибере знать про trim совсем не обязательно :-)
да Вы кстати правы. когда весь твой круг обязанностей достаточно тривиален, и закручен вокруг трех-четырех моментов, после долгой работы в таком темпе даже банальные вопросы и задачи могут в ступор ввести.
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39249453
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczandreykaT,

Код: java
1.
2.
3.
4.
        
String digits = "12345";
System.out.println(digits.chars().map(i -> i - '0').sum());
System.out.println(digits.chars().sum() - digits.length() * '0');



сложность линейная ... не хорошо

нужно делать так :

Код: java
1.
2.
3.
4.
5.
# Run complete. Total time: 00:00:27

Benchmark           Mode  Cnt   Score   Error  Units
SumLine.testStream  avgt   10  57,187 ± 1,059  ns/op
SumLine.testSumm    avgt   10  15,993 ± 2,044  ns/op



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;


@Warmup(iterations = 3)
@Measurement(iterations = 10)
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@State(Scope.Benchmark)
@Fork(2)
public class SumLine {

    private static final String digits = "12345";

    @Benchmark
    public void testSumm(Blackhole bh) {
        bh.consume(summ());

    }

    @Benchmark
    public void testStream(Blackhole bh) {
        bh.consume(stream());
    }

    public int stream() {
        return digits.chars().sum() - digits.length() * '0';
    }

    public int summ() {
        return (Integer.parseInt(digits.charAt(0) + "") + Integer.parseInt(digits.charAt(digits.length() - 1) + "")) / 2 * digits.length();
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(SumLine.class.getSimpleName())
                .forks(1)
                .build();

        new Runner(opt).run();
    }

}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
# JMH 1.12 (released 62 days ago)
# VM version: JDK 1.8.0_91, VM 25.91-b14
# VM invoker: /usr/lib/jvm/java-8-oracle/jre/bin/java
# VM options: <none>
# Warmup: 3 iterations, 1 s each
# Measurement: 10 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Average time, time/op
# Benchmark: ru.stoloto.isalnikov.benchmarkfactorial.SumLine.testStream

# Run progress: 0,00% complete, ETA 00:00:26
# Fork: 1 of 1
# Warmup Iteration   1: 106,927 ns/op
# Warmup Iteration   2: 65,050 ns/op
# Warmup Iteration   3: 56,056 ns/op
Iteration   1: 56,266 ns/op
Iteration   2: 58,029 ns/op
Iteration   3: 56,948 ns/op
Iteration   4: 57,194 ns/op
Iteration   5: 57,900 ns/op
Iteration   6: 56,262 ns/op
Iteration   7: 58,096 ns/op
Iteration   8: 57,537 ns/op
Iteration   9: 56,488 ns/op
Iteration  10: 57,147 ns/op


Result "testStream":
  57,187 ±(99.9%) 1,059 ns/op [Average]
  (min, avg, max) = (56,262, 57,187, 58,096), stdev = 0,701
  CI (99.9%): [56,128, 58,246] (assumes normal distribution)


# JMH 1.12 (released 62 days ago)
# VM version: JDK 1.8.0_91, VM 25.91-b14
# VM invoker: /usr/lib/jvm/java-8-oracle/jre/bin/java
# VM options: <none>
# Warmup: 3 iterations, 1 s each
# Measurement: 10 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Average time, time/op
# Benchmark: ru.stoloto.isalnikov.benchmarkfactorial.SumLine.testSumm

# Run progress: 50,00% complete, ETA 00:00:13
# Fork: 1 of 1
# Warmup Iteration   1: 25,852 ns/op
# Warmup Iteration   2: 15,484 ns/op
# Warmup Iteration   3: 14,362 ns/op
Iteration   1: 15,342 ns/op
Iteration   2: 14,914 ns/op
Iteration   3: 14,919 ns/op
Iteration   4: 15,600 ns/op
Iteration   5: 19,118 ns/op
Iteration   6: 17,211 ns/op
Iteration   7: 16,483 ns/op
Iteration   8: 14,844 ns/op
Iteration   9: 15,193 ns/op
Iteration  10: 16,306 ns/op


Result "testSumm":
  15,993 ±(99.9%) 2,044 ns/op [Average]
  (min, avg, max) = (14,844, 15,993, 19,118), stdev = 1,352
  CI (99.9%): [13,950, 18,037] (assumes normal distribution)


# Run complete. Total time: 00:00:27

Benchmark           Mode  Cnt   Score   Error  Units
SumLine.testStream  avgt   10  57,187 ± 1,059  ns/op
SumLine.testSumm    avgt   10  15,993 ± 2,044  ns/op
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 28.283s
Finished at: Thu Jun 02 18:09:10 MSK 2016
Final Memory: 5M/117M

...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39249457
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Если строка
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
private static final String digits = "123456789";


# Run complete. Total time: 00:00:40

Benchmark            Mode  Cnt   Score   Error  Units
SumLine.testStream   avgt   10  56,913 ± 1,231  ns/op
SumLine.testStream2  avgt   10  63,267 ± 2,041  ns/op
SumLine.testSumm     avgt   10  13,923 ± 0,953  ns/op



где testStream2

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
   @Benchmark
    public void testStream2(Blackhole bh) {
        bh.consume(stream2());
    }

  public int stream2() {
        return digits.chars().map(i -> i - '0').sum();
    }


...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39249461
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не я писал но... специально для автора скопипастил. Из священных рукописей.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    public String trim() {
        int len = value.length;
        int st = 0;
        char[] val = value;    /* avoid getfield opcode */

        while ((st < len) && (val[st] <= ' ')) {
            st++;
        }
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
    }
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39249616
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,

Этот код брался из библиотеки lodash. Для него написано много юнит тестов.

С уважением, Валентин
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39251373
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, филосовская тема немного получилась))) (Я тут уезжал на несколько дней).
Про трим я слышал очень давно и даже его как-то использовал... наверное :) потому в начале его и упомянул.
Просто решил спросить, кто более плотно работает с подобными задачами, про существующие библиотеки, которые делают то же самое, но проще в написании. Для дат же есть joda-time (наверняка еще какие-нибудь популярны), сам не пользовался, мне стандартных хватает.
Ну и вот Blazkowicz указал на спринг, я, кстати, его сейчас и изучаю, но не дошел до этого момента. Челу уже дал ссылку на эту тему, пусть вникает :)
Спасибо всем отписавшимся, тему можно и НЕ закрывать пока, вроде как интересно
...
Рейтинг: 0 / 0
Убираем пробелы в начале и конце строки, дак как все-таки?
    #39251375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ничего интересного. Самая хардкорная строковая оптимизация - приведет к изменнеию ТЗ.
Я много раз это доказывал. Яркий пример сделать Update млрд записей в SQL-таблице - добавить
первой букве Uppercase или знак $ или сделать trim - переходит в create view или create virtual
column - и это (реально сцука) самая быстрая оптимизация. Другое. Понимание того что в Java
строки - immutable - тоже выводит нас на стартовое ТЗ. Откуда вообще в системе строки
без трима? Ввели так? Почему в формочке не правили сразу? Почему в триггере БД не тримали.
И этот поток почему - бесконечен. Вобщем тримминг строк - это безсмысленная и беспощадная
операция которую надо избегать и не грузить процессор. Пускай у него будет больше времени
на полезные задачи.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Убираем пробелы в начале и конце строки, дак как все-таки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]