Лена |
Отправлено: 09.10.2006, 14:56 |
|

Мастер участка
Группа: Участник
Сообщений: 501

|
Программа во время работы формирует предложение. Подскажите как проще получить последнее слово в этом предложении? Каждый раз формируется предложение разной длинны.
Примеры формируемых строк:
void Calculation([in]XlCalculation) PROPERTYPUT
void* Range([in]VARIANT,[in]VARIANT) PROPERTYGET
и т.д.
Мне надо программно проанализировать такую строку и получить только последнее слово: PROPERTYPUT или PROPERTYGET
P.S.
Извините не в тот раздел тему написала. 
Отредактировано Лена — 09.10.2006, 15:04 |
 |
beginner |
Отправлено: 09.10.2006, 15:26 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 44

|
Один вариант. Но слово не должно заканчиваться на пробел.CODE | AnsiString s = "void* Range([in]VARIANT,[in]VARIANT) PROPERTYGET";
char *ch = s.c_str() + s.Length() — 1;
while(ch > s.c_str())
{
if(*ch==32)
{
ch++;
break;
}
ch--;
}
ShowMessage(ch); |
Отредактировано beginner — 09.10.2006, 15:48 |
 |
Лена |
Отправлено: 09.10.2006, 15:49 |
|

Мастер участка
Группа: Участник
Сообщений: 501

|
Вот ще такой вариант возник: ищу последний пробел и далее отсекаю от него до конца строки. Так пойдет? (Строка в Edit1).
Вроде работает:
AnsiString GetPropWord = Edit1->Text;
int poisk = GetPropWord.LastDelimiter(" ");
GetPropWord = Trim(GetPropWord.SubString(poisk,GetPropWord.Length()));
Отредактировано Лена — 09.10.2006, 15:54 |
 |
beginner |
Отправлено: 09.10.2006, 16:00 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 44

|
QUOTE (Лена @ 09.10.2006, 15:49) | Вот ще такой вариант возник: ищу последний пробел и далее отсекаю от него до конца строки. Так пойдет? (Строка в Edit1).
Вроде работает:
AnsiString GetPropWord = Edit1->Text;
int poisk = GetPropWord.LastDelimiter(" ");
GetPropWord = Trim(GetPropWord.SubString(poisk,GetPropWord.Length())); |
Пойдет. Но тоже при условии, что строка не заканчивается на пробел. И тогда уже лучше
GetPropWord = GetPropWord.SubString(poisk+1,GetPropWord.Length());
|
 |
AVC |
Отправлено: 10.10.2006, 10:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1583

|
Trim и анализ предпоследнего символа строки если вы гарантируете обязательное завершение строки PROPERTYPUT или PROPERTYGET |
 |
olegenty |
Отправлено: 10.10.2006, 12:06 |
|
Ветеран
Группа: Модератор
Сообщений: 2412

|
или просто Pos/AnsiPos
|
 |