Как в строке справа найти символ

  • Обычная составная формула
  • Формулы массива для поиска символа с конца строки
    • С помощью МАКС
    • С помощью ПОИСКПОЗ

Как найти первый символ с конца строки?

Поиск позиции последнего вхождения значения внутри ячейки Excel – довольно сложная задача.

Тем не менее, иногда ее необходимо решить, например, чтобы удалить или заменить это вхождение.

Так а в чем же проблема?

Все дело в том, что функции поиска позиции ПОИСК и НАЙТИ ищут только с начала ячейки, и у них нет параметра переключения на поиск с конца.

Процедура Найти и Заменить также не подойдет. Она ищет не с конца строки, а просто находит (и заменяет) все вхождения.

Ниже я покажу пару способов, как осуществить поиск с конца строки.

Обычная составная формула

Формула, похожая на ту, что ниже, рассматривается подробно в статье о том, как удалить последнее слово в ячейке Excel. Поиск пробела с конца строки как раз является необходимым в этом случае.

Формула ниже ищет пробел с конца ячейки A1:

=ПОИСК(ЮНИСИМВ(23456);ПОДСТАВИТЬ(A1;" ";ЮНИСИМВ(23456);ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))

Как она работает:

  • Фрагмент, обозначенный красным цветом, вычисляет количество пробелов в ячейке. Подробнее можно почитать в описании функции ПОДСТАВИТЬ.
  • Это количество является аргументом еще одной подстановки, где заменяется лишь последний пробел (выделено жирным)
  • Вместо пробела в его последнюю позицию вставляется достаточно редкий символ. В данном случае это иероглиф, который создается функцией СИМВОЛ. Но можно и прописать символ вручную. В формуле ниже это обратная косая черта:
=ПОИСК("";ПОДСТАВИТЬ(A1;" ";"";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))))
  • Функция ПОИСК находит позицию этого символа. Поскольку он встречается в строке всего один раз и стоит на месте последнего пробела, это и позволяет нам сказать, что поиск произведен справа налево.

Если вам необходимо найти с конца строки какой-то другой символ или текстовый фрагмент, замените пробелы в этой формуле на него.

поиск с конца строки - формула
Примеры использования составной формулы для поиска с конца строки

Формулы массива для поиска символа с конца строки

Поиск слева направо с помощью функции ПОДСТАВИТЬ, описанный выше, имеет пару недостатков.

Первый – регистрозависимость этой функции, но это легко учесть, обернув нужные фрагменты функциями изменения регистра.

А второй уже серьезнее – формула не очень универсальна, т.к. использует замену на символ, который может оказаться в строке, и тогда она выдаст неверное значение.

От обоих проблем избавят формулы массива. Они обе создают массивы значений, внутри которых функция выбирает последнее.

С помощью МАКС

Формула ниже находит позицию символа “а” в любом регистре.

={МАКС((ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)="а")*СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1))))}
ВАЖНО:
Это формула массива!
Она вводится без фигурных скобок.
Но не клавишей Enter а сочетанием: 
Ctrl+Shift+Enter
После этого фигурные скобки появятся сами.
Если ввести формулу обычным способом, она не сработает.

Механика ее работы пошагово:

  1. Функция ДЛСТР измеряет длину ячейки в символах
  2. ДВССЫЛ создает из текстового представления длины ссылку на диапазон строк с 1 по строку, равную этой длине
  3. Функция СТРОКА возвращает массив чисел, соответствующих этим длинам, соответственно, {1;2;3;…”длина строки”}
  4. Функция ПСТР, обрабатывая этот массив, возвращает для каждого числа символ, стоящий на этой позиции в строке
  5. Текстовое сравнение с символом “а” возвращает булевый массив (значения ИСТИНА или ЛОЖЬ)
  6. Этот массив умножается на повторно созданный массив чисел (пункты 1:3). ЛОЖЬ эквивалентна нулю, а ИСТИНА – единице, поэтому для всех символов, не равных “а”, в результирующем числовом массиве будут нули, а для равных – их позиции
  7. Функция МАКС возвращает наибольшее число в этом массиве.

С помощью ПОИСКПОЗ

Чуть более хитрая механика делает формулу короче, вместе с тем существенно быстрее, а задействует функцию ПОИСКПОЗ:

{=ПОИСКПОЗ(2;1/(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)="а");1)}
ВАЖНО:
Это формула массива!
Она вводится без фигурных скобок.
Но не клавишей Enter а сочетанием: 
Ctrl+Shift+Enter
После этого фигурные скобки появятся сами.
Если ввести формулу обычным способом, она не сработает.

Здесь алгоритм такой:

  1. Как и в предыдущем варианте, с помощью тех же функций ДЛСТР, СТРОКА, ДВССЫЛ, ПСТР и текстового сравнения создается булевый массив;
  2. Но на этом этапе единица делится на него. ЛОЖЬ эквивалентна нулю и выдается ошибка деления на ноль. ИСТИНА возвращает единицу.
  3. Функция ПОИСКПОЗ с последним параметром “1” при поиске 2 (на месте 2 может быть любое число больше 1) возвращает позицию последнего наибольшего числа, меньшее, чем 2. Т.е. последней единицы, которой и соответствует последний найденный в строке символ.

Смотрите также по теме:

Формулы массива в Excel

Удалить последнее слово в ячейке

Найти и заменить первую букву в ячейке на заглавную


Предыдущая статья о формулах массива:

Учимся формулам массива 3/4:

Извлечь текст до первой цифры в ячейке

Часто сталкиваетесь с этой или похожими задачами при работе в Excel?
Сотни инструментов надстройки для Excel !SEMTools помогут вам упростить их решение и сэкономят ваше время!

Как найти первый символ в конце строки?

Найти позицию последнего вхождения значения в ячейке Excel — довольно сложная задача.

Однако иногда это необходимо исправить, например, чтобы удалить или заменить это вхождение.

Так в чем проблема?

Дело в том, что функции поиска местоположения SEARCH и FIND выполняют поиск только с начала ячейки и не имеют возможности перейти к поиску с конца.

Процедура «Найти и заменить» также не будет работать. Он не ищет с конца строки, он просто находит (и заменяет) все вхождения.

Ниже я покажу вам несколько способов поиска с конца строки.

Обычная составная формула

Формула, аналогичная приведенной ниже, подробно описана в статье Как удалить последнее слово в ячейке Excel. В этом случае необходимо искать пробел с конца строки.

Следующая формула ищет пробел от конца ячейки A1:

= ПОИСК (UNISIMV (23456); ПОДСТАВИТЬ (A1; «»; UNISIMV (23456); DLSTR (A1) -LSTR (ПОДСТАВИТЬ (A1;» «;»»))))

Как это работает:

  • В разделе, выделенном красным, рассчитывается количество пробелов в ячейке. Более подробную информацию можно найти в описании функции ЗАМЕНИТЬ.
  • Этот номер является аргументом в пользу другой замены, где заменяется только последний пробел (выделенный жирным шрифтом)
  • Вместо пробела на его последней позиции вставляется довольно редкий символ. В данном случае это иероглиф, созданный функцией SYMBOL. Но вы также можете зарегистрировать символ вручную. В приведенной ниже формуле это обратная косая черта:

= ПОИСК («»; ПОДСТАВИТЬ (A1; «»; «»; DLSTR (A1) -LSTR (ПОДСТАВИТЬ (A1;» «;»»))))

  • Функция ПОИСК находит позицию этого символа. Поскольку он встречается только один раз в строке и находится на месте последнего пробела, это позволяет нам сказать, что поиск выполнялся справа налево.

Если вам нужно найти другие символы или фрагменты текста с конца строки, замените им пробелы в этой формуле.

поиск в конце строки - формула Примеры использования составной формулы для поиска с конца строки

Формулы массива для поиска символа с конца строки

Поиск слева направо с помощью описанной выше функции REPLACE имеет несколько недостатков.

Первый — это регистрозависимый регистр этой функции, но это легко учесть, заключив необходимые фрагменты в функции изменения регистра.

А второе уже посерьезнее: формула не очень универсальна, т.к использует подстановку символа, который может появиться в строке и, таким образом, вернет неверное значение.

Формулы массива избавляют от обеих этих проблем. Оба создают массивы значений, в которых функция выбирает последнее.

С помощью МАКС

В любом случае следующая формула находит положение символа «а.

= {MAX ((MID (A1; LINE (INDIRECT («1:» & DLSTR (A1)))); 1) = «a») * LINE (INDIRECT («1:» & DLSTR (A1)))))) ВАЖНО: Это формула массива! Вы входите без фигурных скобок. Но не клавишей Enter, а комбинацией: Ctrl + Shift + Enter После этого фигурные скобки появятся сами собой. Если вы введете формулу обычным способом, она не сработает.

Механика его работы пошаговая:

  1. Функция DLSTR измеряет длину ячейки в символах
  2. INDIRECT создает из текстового представления длины ссылку на диапазон строк от 1 до строки, равной этой длине
  3. Функция СТРОКА возвращает массив чисел, соответствующих этим длинам, соответственно, {1; 2; 3;… «длина строки»}
  4. Функция MID, обрабатывая этот массив, возвращает символ в этой позиции в строке для каждого числа
  5. Текстовое сравнение с символом «a» возвращает логический массив (значения TRUE или FALSE)
  6. Эта матрица умножается на воссозданную матрицу чисел (точки 1: 3). FALSE эквивалентно нулю, а TRUE эквивалентно единице, поэтому для всех символов, которые не равны «a», результирующий числовой массив будет содержать нули, а для равных — их позиции
  7. Функция MAX возвращает наибольшее число в этом массиве.

С помощью ПОИСКПОЗ

Чуть более умный механизм делает формулу короче, но в то же время намного быстрее и использует функцию СРАВНЕНИЕ:

{= SEARCH (2; 1 / (MID (A1; LINE (INDIRECT («1:» & DLSTR (A1)))); 1) = «a»); 1)} ВАЖНО: это формула массива! Вы входите без фигурных скобок. Но не клавишей Enter, а комбинацией: Ctrl + Shift + Enter После этого фигурные скобки появятся сами собой. Если вы введете формулу обычным способом, она не сработает.

Вот алгоритм:

  1. Как и в предыдущей версии, с использованием тех же функций DLSTR, STRING, INDIRECT, MID и сравнения текста создается логический массив;
  2. Но на данном этапе на него делится единство. FALSE эквивалентно нулю, и выводится ошибка деления на ноль. ИСТИНА возвращает единицу.
  3. Функция ПОИСКПОЗ с последним параметром «1» при поиске 2 (на месте 2 может быть любое число больше 1) возвращает позицию последнего наибольшего числа меньше 2) То есть последнюю единицу, которая соответствует последней в строке найден символ.
 

mirvaal

Пользователь

Сообщений: 86
Регистрация: 01.01.1970

Необходимо что-то типа «ПОИСК» или «НАЙТИ» только не слева направо, а наоборот.  
Есть набор определенных данных нужно отобрать в строках данные справа налево до определенного знака (первого)  
Пример прилагается.  
Я не спец, а очень нужно.  
Заранее всем спасибо.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

 

mazayZR

Пользователь

Сообщений: 950
Регистрация: 01.01.1970

слэн, а вот твой же вариант решения проблемы ;)  
«символы после последнего пробела»    
не это ли тут надо? ;)  

  =ПСТР(СЖПРОБЕЛЫ(A1);1+НАЙТИ(«~~~»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»~~~»;ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»))));ДЛСТР(A1))  

  а вот формула массива от DL  
делает тоже самое — выбирает все символы после последнего пробела  

  =ПРАВСИМВ($A$1;ДЛСТР($A$1)-МАКС(ЕСЛИ(ПСТР($A$1;СТРОКА(ДВССЫЛ(«2:»&ДЛСТР($A$1)-1));1)=» «;СТРОКА(ДВССЫЛ(«2:»&ДЛСТР($A$1)-1));0)))

 

mirvaal

Пользователь

Сообщений: 86
Регистрация: 01.01.1970

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

но эта по-моему короче? :)  

  =ПСТР(B5;МАКС(ЕСЛИ(ПСТР(B5;СТРОКА(СМЕЩ($A$1;0;0;ДЛСТР(B5);1));1)=» «;СТРОКА(СМЕЩ($A$1;0;0;ДЛСТР(B5);1))))+1;9999)  

  112 против 141 символа :)  

      =ПСТР(СЖПРОБЕЛЫ(A1);1+НАЙТИ(«~~~»;ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»~~~»;ДЛСТР(СЖПРОБЕЛЫ(A1))-ДЛСТР(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;»»))));ДЛСТР(A1))

 

ZVI

Пользователь

Сообщений: 4338
Регистрация: 23.12.2012

85 символов и не формула массива :-)  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);60))

 

mazayZR

Пользователь

Сообщений: 950
Регистрация: 01.01.1970

забавно :)  
утащил в амбар

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

{quote}{login=ZVI}{date=14.01.2009 10:58}{thema=}{post}85 символов и не формула массива :-)  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);60)){/post}{/quote} Есть одно ограничение. Строка символов после последнего пробела должна быть короче 60.  
Чтобы снять это ограничение предлагаю так:  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;ДЛСТР(B5)));ДЛСТР(B5));ДЛСТР(B5)))  
106 символов стало.

 

ZVI

Пользователь

Сообщений: 4338
Регистрация: 23.12.2012

Тема сегодня такая :-) расчет на «человеческое» слово.  
Эту формулу я уже приводил, и по ней можно выделять не только последнее слово:  

http://www.planetaexcel.ru/forum.php?thread_id=5027

 

Если бы все звёзды были одного размера, то для того чтобы узнать какая ближайшая совсем не надо измерять расстояние до всех звёзд а потом их сравнивать, достаточно выбросить что нибудь за борт и посмотреть в какую сторону оно будет двигаться  
Ну,  а если они всё же разного размера то нужно их как следует раздвинуть и действовать по вышесказанному.    

  Спасибо за формулу, а также за все посты в «сортировка массива в VBA»

 

{quote}{login=Лузер™}{date=15.01.2009 10:11}{post}Есть одно ограничение. Строка символов после последнего пробела должна быть короче 60.{/post}{/quote}  
да ладно .. можно ж и 99 (или 999) использовать

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

вот вам 84 символа без существенных ограничений :)  

  ПОДСТАВИТЬ(A1;ЛЕВСИМВ(A1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»)  

  кто меньше ? :))

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Слэн, Ваша формула но на один символ короче :)  
ПОДСТАВИТЬ(A1;ПСТР(A1;1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»)  
«ПСТР» + «1;» < ЛЕВСИМВ

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

:))  

  ну тогда уж :  

  ПСТР(A1;1+МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999)));999)  

  ваш ход

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

и еще есть резерв .. но ваш ход, сударь

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Кстати, у ZVI 85 знаков с «=», а у слэна без оного.  
Так что если в формуле ZVI провести аналогичную замену, то выйдет все равно короче.  
СЖПРОБЕЛЫ(ПСТР(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(B5);» «;ПОВТОР(» «;60));60);1;60))  
84 знака (учитывая «=»)  
Еще можно учесть отсутствие фигурных скобок, которые в формуле слэна необходимы.

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Нету у меня ходов. Просто я давно заметил, что ПСТР короче ЛЕВСИМВ :)  
Времени жаль нет ковырять формулы.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

ПСТР(A1;1+МАКС((ПСТР(A1;СТРОКА(1:999);1)=» «)*СТРОКА(1:999));999)  

  65 символов без равно и фиг скобок  

  ЗАМЕНИТЬ(A1;1;МАКС((ПСТР(A1;СТРОКА(1:999);1)=» «)*СТРОКА(1:999));»»)  

  68 символов

 

Плюс АДЫН!!! замечательным пионерам Excelя нашего форума!!!  
А казалось давно решенный простой вопрос…  
Игорь67

 

{quote}{login=слэн}{date=15.01.2009 12:01}{thema=}{post}вот вам 84 символа без существенных ограничений :)  
ПОДСТАВИТЬ(A1;ЛЕВСИМВ(A1;МАКС(ЕСЛИ(ПСТР(A1;СТРОКА(1:999);1)=» «;СТРОКА(1:999))));»»){/post}{/quote}  
Слэн! Дело в том что Ваша формула и формула Zvi основаны на существенно различных идеях.  
Классическое решение, широко используемое на данном форуме, заключается в поиске позиции символа, отвечающего требуемым условиям и использованиии этой позиции для получения решения.  
Формула Zvi принципиально иная.  
Она основана на том, что если между словами мы вставим достаточно длинные пустоты, то каждое слово попадёт во вполне определённый участок: нам известны позиции начала и конца участка, но не известно где именно в нём находиться слово. То есть любое слово дополняется справа и слева пустотами, так чтобы  количество символов в слове и пустот окружающих слово было равно вполне определённому числу. В приведённых Zvi формулах — 60.  
Использовать для сравнения этих двух подходов задачу о выделении последнего слова некорректно, ну а тем более ложить в основу сравнения длину формулы.  
Например возьмём задачу о выделении третьего с конца слова. При классическом подходе придётся использовать «гнусную» по количеству символов функцию наибольший, и ещё находить позицию последнего символа в слове.  
В подходе ZVi достаточно изменить номер выбираемого участка:  
=СЖПРОБЕЛЫ(ЛЕВСИМВ(ПРАВСИМВ(» «&ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A2);» «;ПОВТОР(» «;60));3*60);60))  
//разделитель слов пробел «», вставляем между словами по 60 пробелов, выбираем участок длиной 60, начинающйся со 180 символа с конца, удаляем пробелы, получаем искомое слово//  
Разумеется остаётся в силе замечание Лузера о том, что существуют нехорошие фразы, для которых формула будет давать ошибки, но является ли это таким уж страшным недостатком?

 

написал в ответ целую повесть, с иллюстрациями, алеегориями — а оно мне «код не совпадает» зол!!!!  

  для поставленной задачи формула ZVI может быть урезана так:  
СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(A1);» «;ПОВТОР(» «;60));60))  

  что дает 68 символов..

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

{quote}{login=dl@kartoshka.ru}{date=16.01.2009 08:20}{post}Разумеется остаётся в силе замечание Лузера о том, что существуют нехорошие фразы, для которых формула будет давать ошибки, но является ли это таким уж страшным недостатком?{/post}{/quote}На самом делее этот «недостаток» легко исправляется. Формула, правда, становится длиннее, но этот «перфекционизм (совершенство)» мне напоминает старый тезис программистов, что «любую программу можно сократить на одну строку». :-D

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

остается еще ограничение на длину строки, что в переводе около 500 «слов» в изначальной фразе..

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

{quote}{login=слэн}{date=16.01.2009 11:08}{thema=}{post}остается еще ограничение на длину строки, что в переводе около 500 «слов» в изначальной фразе..{/post}{/quote} Ну если у Вас «слово» длиной в среднем 65 символов, то 500 слов. :)  
Провел сравнение разных формул на предельной длине строки (32767 симв.). Все что длиннее эксель тихо обрезает.  
Формулы от слэна рабочие (с оговоркой замены СТРОКА(1:999) на СТРОКА(1:65536))  
Самая короткая и универсальная вышла:  
ПСТР(B3;1+МАКС((ПСТР(B3;СТРОКА(1:65536);1)=» «)*СТРОКА(1:65536));65536)  
71 символ без = и {}  
Предупреждаю: считает такую строку долго.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

я имел в виду, что слова разделены пробелами, т.е пробелов может быть как минимум на 1 меньше слов, а каждый пробел(после сжпробелы) заменяется  в формуле ZVI на 60 таких же.. но еще и сами слова — отсюда примерно 500 :)  

  с другой стороны трудно ожидать таких длинных слов или фраз — может и 60 достаточно, но 999-то уж точно? и уж совсем точно, что раз строка не может превышать 32767, то и 65536 не нужны..  

  а если у меня 999 заменить на 60, то это ж целых три символа экономии :)

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

А, теперь понял откуда 500 взялось. Логично.  

  Мне лень было менять 65536 на 32767 — количество символов одинаковое.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

Время — да. Но этого критерия еще не вводилось. Только количество символов в формуле.

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

кстати, DL, с универсальностью тоже не все так просто.. не получится так, как Вы предложили..  

  попробуйте на такой строчке:  

  1 2 3 444444444444444444444444444444444444444444444444444444444444­44444444 5

 

dl@kartoshka.ru

Гость

#30

20.01.2009 07:05:20

Поэтому я и уточнил что замечание Лузера остаётся в силе.  
С другой стороны «неправильные» фразы, я думаю, встречаются не так уж часто.  
И на самом деле все упирается в методологический вопрос: необходимо ли создавать формулу, которая гарантировано посчитает требуемое или задуматься о том что же лежит в исходных данных и предъявить к ним некоторые ограничивающие требования.  
То есть совершенная формула при ошибочных исходных данных, тянет ошибку дальше, несовершенная формула, вносит ошибку в ошибку, но так или иначе, побкда над ошибкой лостигается возвращением к истокам.  

   а вот канувшие в лету аллегории действительно очень жаль, что поделать борьба с киборгами перманентна….

Я
   misha122062

06.05.09 — 11:51

надо в строке найти первый нужный символ справа. На ум пришло — перебор по «Найти», пока не последний.

А нет ли проще?

   mikecool

1 — 06.05.09 — 11:51

Прав отменили?

   mikecool

2 — 06.05.09 — 11:51

+1 а , пропустил «нужный»

   gr13

3 — 06.05.09 — 11:52

Прав(Строка, 1)?

   НЕА123

4 — 06.05.09 — 11:57

строка= стрзаменить(Стр,Символ, Символы.НПП);

номерпозиции = стрдлина(стр)-стрДлина(СтрПолучитьСтроку(строка,стрчислострок(строка));

   misha122062

5 — 06.05.09 — 11:57

Ну причем тут Прав.

Она берет справа определенное количество символов.

А мне надо Справа найти нужный символ и от него отрезать.

типа:

UserКаталог = «D:……AllExchangeИванов».

Вот мне и надо найти «Иванов»

   НЕА123

6 — 06.05.09 — 11:58

+(4) ежели нет то 0.

   misha122062

7 — 06.05.09 — 11:58

ище по первому справа «»

   misha122062

8 — 06.05.09 — 11:59

(4)не понял к чему

   H A D G E H O G s

9 — 06.05.09 — 12:01

Элегантно:

   UserКаталог=СтрЗаменить(UserКаталог,»»,Символы.ПС);

   Текстарь=Новый ТекстовыйДокумент;

   Текстарь.УстановитьТекст(UserКаталог);

   БывшийМинистрОбороны= Текстарь.ПолучитьСтроку(Текстарь.КоличествоСтрок());

   НЕА123

10 — 06.05.09 — 12:02

строка= стрзаменить(Стр,Символ, Символы.НПП);

Иванов=СтрПолучитьСтроку(строка,стрчислострок(строка);

   misha122062

11 — 06.05.09 — 12:02

(9)ШЕДЕВВР!!

К себе в хелп занесу

   НЕА123

12 — 06.05.09 — 12:03

(10) тьфу… Символы.НПП = Символы.ПС

   H A D G E H O G s

13 — 06.05.09 — 12:04

(11) Вон, у (10) — лучше

   misha122062

14 — 06.05.09 — 12:04

согласен! Спасибо

   H A D G E H O G s

15 — 06.05.09 — 12:05

СтрПолучитьСтроку()

СтрЧислоСтрок()

ТРег()

— это с какого релиза появилось?

  

НЕА123

16 — 06.05.09 — 12:13

(15)

насчет ТРег() не знаю,

СтрПолучитьСтроку(), СтрЧислоСтрок() было и в 77(может имена другие были, но суть та же).

TurboConf — расширение возможностей Конфигуратора 1С

0 / 0 / 0

Регистрация: 23.11.2010

Сообщений: 153

1

Поиск первого символа справа или последнего слева

05.07.2006, 21:59. Показов 10371. Ответов 5


Студворк — интернет-сервис помощи студентам

Всем здрасти!
Короткий вопрос, как найти первый символ в тексте, но справа. Или последний слева.
Спасибо!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

05.07.2006, 21:59

5

VladConn

5 / 5 / 3

Регистрация: 17.10.2007

Сообщений: 1,119

05.07.2006, 23:05

2

Visual Basic
1
2
3
4
    Dim strText As String
    strText = "0123456789"
    
    MsgBox "My Last Character is: " & Right$(strText, 1), , strText



0



0 / 0 / 0

Регистрация: 23.11.2010

Сообщений: 153

06.07.2006, 17:08

 [ТС]

3

Извиняюсь, как обычно неправильно формулирую вопрос. Нужно найти первый опеределенный символ справа, допустим букву «А»



0



vlth

14 / 14 / 2

Регистрация: 23.03.2010

Сообщений: 635

06.07.2006, 18:40

4

Visual Basic
1
2
3
4
    Dim strText As String
    strText = "0123456789"
    
    MsgBox "Порядковый номер искомого знака (" & """6""" & ") с конца строки  : " & InStr(1, StrReverse(strText), 6)



0



0 / 0 / 0

Регистрация: 23.11.2010

Сообщений: 153

06.07.2006, 20:07

 [ТС]

5

SUPER! SPASIBO!



0



vlth

14 / 14 / 2

Регистрация: 23.03.2010

Сообщений: 635

07.07.2006, 17:30

6

Или последний слева.

Visual Basic
1
2
3
Dim strText As String
strText = "01234AA789"
MsgBox InStrRev(strText, "A")



0



Понравилась статья? Поделить с друзьями:
  • Как найти полосу удачи
  • Как составить план допроса подозреваемого
  • Как найти объем винчестера
  • Блины на ряженке прилипают как исправить
  • Победа в матче 2 как найти