Заменить первый пробел в строке слева

Автор radius, 6 января 2022, 22:36

0 Пользователи и 1 гость просматривают эту тему.

radius

Всем привет.
Нужна формула, заменяющая первый (слева) пробел в строке на символ #
Все строки выглядят примерно так:
1-1 слово слово1 слово2
12-1 текст слово1 слово2
72-34 слово слово1 слово2
3-12 2222 текст слово1 слово2
Заранее благодарен.

eeigor

#1
С Рождеством!
Вот только пробела слева в примере не видно. Он есть в каждой строке и обязательно один, или его нужно сначала найти?
А то вот так:
   A2: =" 1-1 слово слово1 слово2"
   B2: ="#"&MID(A2;2;255)
MID (ПСТР)
Как выглядят ваши строки после преобразования, и что значит "примерно"? Есть исключения?

Попробую угадать (см. пример в файле).
В том числе дан вариант на любое количество пробелов слева или их полное отсутствие.
Первым символом тогда будет всегда решётка:
   B5: =REGEX(A5;"^ *";"#")

Файл прилагается.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

radius

#2
Прошу прощения, результат после преобразования должен быть таким:
1-1#слово слово1 слово2
12-1#текст слово1 слово2
72-34#слово слово1 слово2
3-12#2222 текст слово1 слово2

Пробелов в строке может быть несколько (два подряд не встречаются), в первой позиции нет пробела никогда, под первым слева пробелом я имею ввиду следующее -

1-1[первый пробел]слово[второй пробел]слово1[третий пробел]слово2
12-1[первый пробел]текст[второй пробел]слово1[третий пробел]слово2
72-34[первый пробел]слово[второй пробел]слово1[третий пробел]слово2
3-12[первый пробел]2222[второй пробел]текст[третий пробел]слово1[четвертый пробел]слово2

radius

#3
12-1[первый пробел]текст[второй пробел]слово1[третий пробел]слово2
72-34[первый пробел]слово[второй пробел]слово1[третий пробел]слово2
3-12[первый пробел]2222[второй пробел]текст[третий пробел]слово1[четвертый пробел]слово2

mikekaganski

С уважением,
Михаил Каганский

radius

Огромное спасибо всем ответившим! Вопрос закрыт.
С рождеством!

mikekaganski

На самом деле REGEX заменяет первое вхождение искомого, если не указан четвёртый аргумент "g". Поэтому подойдёт и упрощённая формула:

=REGEX(A1;" ";"#")
С уважением,
Михаил Каганский

radius

=SUBSTITUTE(A4;" ";"#";1)
вроде бы тоже работает.

eeigor

#8
Разумеется. Потому что Вы разъяснили ситуацию, и она проста.
Но вариант Михаила – это шаг вперёд к регулярным выражениям и мастерству. Много чего надо почитать, но оно того стоит...

И наконец, мне по вкусу то, что короче. То и лучше.

UPD:
Но ваш вариант подойдёт для открытия в MS Excel, если это важно.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

Цитата: radius от  7 января 2022, 10:58
=SUBSTITUTE(A4;" ";"#";1)
вроде бы тоже работает.

И к тому же быстрее. Регулярки гораздо мощнее, но значительно медленнее.
С уважением,
Михаил Каганский