Заменить первые вхождения X

В одной строке:

text if not text.endswith(suffix) or len(suffix) == 0 else text[:-len(suffix)]
1
задан Nick 13 July 2018 в 18:55
поделиться

2 ответа

=ARRAYFORMULA(JOIN(,SUBSTITUTE(SPLIT(SUBSTITUTE(A1,"_","_                  
2
ответ дан I'-'I 17 August 2018 в 12:13
поделиться
  • 1
    Это сохранит только 3-й _. Если есть 4 или более _, это не сработает. – Nick 13 July 2018 в 20:04
  • 2
    @ Ник, я думаю, что так будет. Вам нужно изменить 3 на 4. Вы протестировали его? Если да, укажите строку примера и нужный результат? – I'-'I 13 July 2018 в 20:07
  • 3
    Мне очень приятно – Tom Sharpe 13 July 2018 в 20:56
  • 4
    Как ни странно, если вы попросите это заменить больше вхождений, чем есть, это не ошибка, а возвращает некоторую искаженную конкатенацию. например abcda_b_c_d – Jeeped 14 July 2018 в 03:29
  • 5
    – Tom Sharpe 14 July 2018 в 07:58

Попробуйте,

=regexreplace(REGEXEXTRACT(A2, rept("[^_]*_", 2)), "_", text(,))&mid(A2, len(REGEXEXTRACT(A2, rept("[^_]*_", 2)))+1, len(A2))

В функции REPT, повторяющей шаблон, будет индикатор или сколько его нужно заменить. (в двух местах)

Связанная электронная таблица

1
ответ дан Jeeped 17 August 2018 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: