Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
1

В edit после каждого слова ставить один пробел и каждое слово начинать с большой буквы

17.11.2016, 01:32. Просмотров 2012. Ответов 17
Метки нет (Все метки)

Как сделать, что бы в edit после каждого слова ставился только один пробел и каждое слово начиналось с большой буквы?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2016, 01:32
Ответы с готовыми решениями:

В edit после каждого слова ставить один пробел и каждое слово начинать с большой буквы
Как сделать, что бы в edit после каждого слова ставился только один пробел и каждое слово...

После каждого символа ‘.’ вставить пробел, а следующее слово начать с большой буквы
Дана строка символов. После каждого символа ‘.’ вставить пробел, а следующее слово начать с большой...

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

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

17
Эксперт Pascal/Delphi
2357 / 1277 / 1483
Регистрация: 29.08.2014
Сообщений: 4,600
17.11.2016, 04:29 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var
  s:TStringList;
  i:integer;
begin
  s:=TStringList.Create;
  s.Delimiter:=' ';
  s.DelimitedText:=edit1.Text;
  edit1.Clear;
  for i := 0 to s.Count-1 do
     if s[i]<>'' then edit1.Text:=edit1.Text+AnsiUpperCase(s[i][1])+copy(s[i],2,length(s[i]))+' ';
  s.Free;
end;
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
18.11.2016, 04:08  [ТС] 3
Joy, выбивает такую вот ошибку
0
Миниатюры
В edit после каждого слова ставить один пробел и каждое слово начинать с большой буквы  
494 / 396 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
18.11.2016, 05:21 4
Joy, Вот это почему так?
Цитата Сообщение от Joy Посмотреть сообщение
Delphi
1
AnsiUpperCase(s[i][1])
Добавлено через 1 минуту
Цитата Сообщение от vladimir211 Посмотреть сообщение
после каждого слова
что в вашем Edit понимается под "словом"? другими словами, какие разделители слов у вас там?
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
18.11.2016, 05:22  [ТС] 5
AHBAR, а как должно быть?

Добавлено через 36 секунд
AHBAR, разделитель слова - пробел
0
494 / 396 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
18.11.2016, 05:54 6
Цитата Сообщение от vladimir211 Посмотреть сообщение
а как должно быть?
в общем случае могут быть значки препинания: запятые двоеточия и т.д.
0
Эксперт Pascal/Delphi
2357 / 1277 / 1483
Регистрация: 29.08.2014
Сообщений: 4,600
18.11.2016, 11:17 7
Цитата Сообщение от vladimir211 Посмотреть сообщение
Joy, выбивает такую вот ошибку
у меня ошибки нет.
набираю :Я помню чудное мнгеовенье передо мной явилась ты
получаю :Я Помню Чудное Мнгеовенье Передо Мной Явилась Ты

Добавлено через 1 минуту
Цитата Сообщение от AHBAR Посмотреть сообщение
Joy, Вот это почему так?
чем не нравится? сделал первую букву каждого слова заглавной
0
Эксперт Pascal/Delphi
2357 / 1277 / 1483
Регистрация: 29.08.2014
Сообщений: 4,600
18.11.2016, 11:18 8
вот проект, если ошибки пишите:
0
Вложения
Тип файла: zip Capital_first_letter.zip (4.1 Кб, 4 просмотров)
494 / 396 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
18.11.2016, 12:17 9
Цитата Сообщение от Joy Посмотреть сообщение
чем не нравится?
все норм)) прост не всех возможностей TstringList'a знал
vladimir211, это у вас гдето в другом месте ошибка скорее всего. поэтому или покажите весь код или см.внимательней
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
18.11.2016, 23:51  [ТС] 10
Joy, в вашем проекте все работает.
А вот скажите можно ли это сделать не через кнопку, а что бы просто вводить это в едит и оно сразу вводилось с большой буквы?
0
northener
18.11.2016, 23:59
  #11

Не по теме:

Цитата Сообщение от vladimir211 Посмотреть сообщение
А вот скажите можно ли это сделать не через кнопку, а что бы просто вводить это в едит и оно сразу вводилось с большой буквы?
Теперь понятно откуда взялось EStackOverflow.

0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
19.11.2016, 00:03  [ТС] 12
northener, значит сделаем через кнопку
0
пофигист широкого профиля
4274 / 2798 / 791
Регистрация: 15.07.2013
Сообщений: 16,206
19.11.2016, 00:11 13
Цитата Сообщение от vladimir211 Посмотреть сообщение
northener, значит сделаем через кнопку
Можно и не через кнопку. Но!
Если во-первых код Joy поместить не в OnChange, а в OnKeyUp. А во-вторых в цикле
Delphi
1
for i := 0 to s.Count-1 do
сначала делать
Delphi
1
AnsiLowerCase(s[i]);
Это на случай, когда в эдит не добавляется символ, а вставляется в "середину".
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
19.11.2016, 04:24  [ТС] 14
Joy, а можно как нибудь сделать, что бы если пользователь вводил в Едит меньше трех слов то ему об этом выводилось сообщение?
0
494 / 396 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
19.11.2016, 05:01 15
Цитата Сообщение от vladimir211 Посмотреть сообщение
Joy, а можно как нибудь сделать, что бы если пользователь вводил в Едит меньше трех слов то ему об этом выводилось сообщение?
без кнопки? а стОит ли? юзер нажмет 1 клавишу, ему выведется сообщение, нажмет вторую - опять сообщение, да пока 1 слово введет, он вас столько раз вас обругает как программиста)

Добавлено через 10 секунд
хотя если через label выводить сообщение то можно
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
19.11.2016, 06:33  [ТС] 16
AHBAR, нет, с кнопкой
0
Эксперт Pascal/Delphi
2357 / 1277 / 1483
Регистрация: 29.08.2014
Сообщений: 4,600
19.11.2016, 07:33 17
Лучший ответ Сообщение было отмечено vladimir211 как решение

Решение

vladimir211, можно. Написал бы сразу все хотелки.

Добавлено через 3 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
var
  s:TStringList;
  i:integer;
begin
  s:=TStringList.Create;
  s.Delimiter:=' ';
  s.DelimitedText:=edit1.Text;
  if s.count<3 then showmessage('мало слов') else begin
  edit1.Clear;
  for i := 0 to s.Count-1 do
     if s[i]<>'' then edit1.Text:=edit1.Text+AnsiUpperCase(s[i][1])+copy(s[i],2,length(s[i]))+' ';
End;
  s.Free;
end;
1
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 48
19.11.2016, 08:18  [ТС] 18
Joy, спасибо большое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2016, 08:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Добавить заданное слово B после каждого введенного слова A через пробел
этот код добавляет заданное слово только в первый начальный текст А как сделать так чтобы он...

После каждого слова вставьте слово «Бум!» и выведите список на консоль в одну строку через пробел
Получается все, кроме последнего условия. хэлп%-) Задачка: Считывать с консоли слова, вводимые...

Задано предложение, где после каждого слова ставится один пробел. Удалить тексты, находящиеся в скобках.
Задано предложение, где после каждого слова ставится один пробел. Удалить тексты, находящиеся в...

Каждое слово предложения с большой буквы
Добрый вечер! Можете сказать как спрограммировать так, чтобы каждое слово предложения начиналось...

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

Записать каждое слово текстовой строки с большой буквы
Записать каждое слово текстовой строки с большой буквы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.