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

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

от forest , в категории: Другие , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от kennedi_pfeffer , 7 месяцев назад

@forest 

Вы можете использовать следующий код на Delphi, чтобы сделать каждое слово в строке с большой буквы, игнорируя скобки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function CapitalizeWordsIgnoringBrackets(const S: string): string;
var
  I: Integer;
  InBracket: Boolean;
begin
  Result := '';
  InBracket := False;
  for I := 1 to Length(S) do
  begin
    if S[I] = '(' then
    begin
      InBracket := True;
    end
    else if S[I] = ')' then
    begin
      InBracket := False;
    end
    else if not InBracket then
    begin
      if (I = 1) or (S[I - 1] = ' ') then
      begin
        Result := Result + UpCase(S[I]);
      end
      else
      begin
        Result := Result + S[I];
      end;
    end
    else
    begin
      Result := Result + S[I];
    end;
  end;
end;


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

1
2
3
4
5
6
7
var
  S: string;
begin
  S := 'hello (world) how are (you) today?';
  ShowMessage(CapitalizeWordsIgnoringBrackets(S));
  // Выведет: 'Hello (world) How Are (you) Today?'
end;