Страницы

Поиск по вопросам

воскресенье, 7 июля 2019 г.

Как сделать каждое слово в строке (игнорируя скобки) с большой буквы?

Данная функция преобразовать строку таким образом, что каждое слово начинается с большой буквы.
Function UpLet(s:string):string; var s_out:string; begin s_out:=''; while Pos(' ',s)<>0 do begin begin s_out:=s_out+AnsiUpperCase(s[1])+Copy(s,2,Pos(' ',s)-1); Delete(s,1,Pos(' ',s));
end; end; if Pos(' ',s)<>Length(s) then s_out:=s_out+AnsiUpperCase(s[1])+Copy(s,2,Length(s)); Result:=s_out; end;
Сейчас данная функция обрабатывает текст такого плана
test test test (test test)
Вот так:
Test Test Test (test Test) - то есть слово (test в скобках не c большой буквы
Как исправить эту функцию что бы скобки игнорировались ?
То есть, результат на выходе: Test Test Test (Test Test)


Ответ

Игнорируются все "небуквы". Но между словами кроме "небукв" обязательно должны быть пробелы.
function UpLet(s:s tring): string; var hadSpace: boolean; begin hadSpace := true; for i := 1 to Length(s) do begin if hadSpace and ((s[i] in ['a'..'z']) or (s[i] in ['A'..'Z'])) then begin s[i] := AnsiUpperCase(s[i])[1]; hadSpace := false; end; if s[i] = ' ' then begin hadSpace := true; end; end; result := s; end;

Комментариев нет:

Отправить комментарий