Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Karsar123
0 / 0 / 1
Регистрация: 26.10.2013
Сообщений: 104
1

Сделать заглавными буквы после точки

08.02.2016, 13:33. Просмотров 1022. Ответов 12
Метки нет (Все метки)

Как сделать так что бы после каждой точки буква была заглавная
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2016, 13:33
Ответы с готовыми решениями:

Удалить буквы «М», стоящие после «Н», если только после «М» не стоит «А»
Помогите с этой задачкой Создайте Windows- приложение. В этом приложении...

Выпадающий список после точки
Как сделать, чтобы в RichTextBox/TextBox после ввода точки выпадал список по...

Ограничить кол-во цифр после точки
private void button1_Click(object sender, EventArgs e) { ...

пробелы после каждой буквы
Доброго времени суток!!! ПОМОГИТЕ ПОЖАЛУЙСТА!!! напишите программу пожалуйста,...

Прерывание цикла for после достижения нужной точки
Здравствуйте. Есть прога которая берет все имена папок в указанном каталоге, и...

12
Yurui
11 / 11 / 7
Регистрация: 24.04.2015
Сообщений: 51
Завершенные тесты: 1
08.02.2016, 16:57 2

Не по теме:


Нажать Shift?


Где сделать? В файле, в водимом тексте?
0
zna926
336 / 311 / 254
Регистрация: 24.09.2013
Сообщений: 1,844
Записей в блоге: 1
08.02.2016, 16:57 3
После точки сразу будет буква или может быть пробел?
0
Karsar123
0 / 0 / 1
Регистрация: 26.10.2013
Сообщений: 104
08.02.2016, 17:11  [ТС] 4
смотрите мы вводим допустим

Привет Пока.Ага.
0
Yurui
11 / 11 / 7
Регистрация: 24.04.2015
Сообщений: 51
Завершенные тесты: 1
08.02.2016, 17:36 5
Сразу прошу прощения за то что так не красиво, зато понятно) Работает если не было пробелов после точки.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        bool ustap = false;
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length >1)
            {
                if ((textBox1.Text[textBox1.Text.Length -2] == '.')&&(ustap))
                {
                    ustap = false;
                    string s = textBox1.Text;
                    textBox1.Text=textBox1.Text.Remove(textBox1.Text.Length - 1);
                    textBox1.Text =textBox1.Text + s[s.Length-1].ToString().ToUpper();
                    textBox1.SelectionStart = textBox1.Text.Length;
                }
            }
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            ustap = true;
        }
Работает, но вариант поганый)

Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
        bool upper = false;
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((upper) && (e.KeyChar != 32))
            {
                e.KeyChar = char.Parse(e.KeyChar.ToString().ToUpper());
                upper = false;
            }
            if (e.KeyChar == 46)
                upper = true;            
        }
Вот, человеческий вариант, на пробелы внимания не обращает
0
Karsar123
0 / 0 / 1
Регистрация: 26.10.2013
Сообщений: 104
08.02.2016, 18:15  [ТС] 6
Да спасибо теперь после " . " пишет заглавными, но после пробела не пишется слово заглавными буквами
0
greg zakharov
Покинул форум
1954 / 827 / 239
Регистрация: 07.05.2015
Сообщений: 1,658
08.02.2016, 18:20 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
using System.Linq;
 
internal sealed class Program {
  static void Main() {
    String s = "консольный пример решения задачи. до кучи.";
    s.Split('.').ToList().ForEach(i => {
      if (!String.IsNullOrEmpty(i)) {
        i = i.Trim();
        Console.WriteLine(i.Remove(1).ToUpper() + i.Substring(1) + ".");
      }
    });
  }
}
0
Karsar123
0 / 0 / 1
Регистрация: 26.10.2013
Сообщений: 104
08.02.2016, 18:44  [ТС] 8
Спасибо конечно за консольный вариант но мне бы в той которой мне нужна

Добавлено через 10 минут
мне нужно что бы допустим до слова был пробел и после этого пробела что бы слово начиналось с заглавной буквы и после точки что бы начиналось с заглавной буквы
0
Woldemar89
TheGreatCornholio
1165 / 653 / 272
Регистрация: 30.07.2015
Сообщений: 2,263
Завершенные тесты: 1
08.02.2016, 19:51 9
Karsar123, можно на регулярках попробовать.

Кликните здесь для просмотра всего текста
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "ходит дурачок по лесу.ищет дурачок глупей себя. идёт смерть по улице, несёт блины на блюдце. кому вынется — тому сбудется.";
 
            text = Regex.Replace(text, @"(^|\.[\s]*)\w+", RepText);
 
 
            Console.WriteLine(text);
            Console.ReadKey();
 
        }
 
        static string RepText(Match _match)
        {            
            string matchText = _match.ToString();
 
            char firstCharOfWord = matchText.First(char.IsLetterOrDigit);
 
            int firstCharIndex = matchText.IndexOf(matchText.First(char.IsLetterOrDigit));
 
            return matchText.Substring(0, firstCharIndex + 1).ToUpper() + matchText.Substring(firstCharIndex + 1);
        }
    }
}


Добавлено через 20 минут
На всякий случай, классический вариант.

Кликните здесь для просмотра всего текста
C#
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
35
36
37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "ходит дурачок по лесу.ищет дурачок глупей себя. идёт смерть по улице, несёт блины на блюдце. кому вынется — тому сбудется.";
 
            text = RepText(text);
 
            Console.WriteLine(text);
            Console.ReadKey();
 
        }
 
        static string RepText(string text)
        {
            char[] input = text.ToCharArray();
 
            bool waitLowerChar = false;
 
            if (char.IsLetter(input[0])) input[0] = char.ToUpper(input[0]);
            
            for (int i = 1; i < input.Length; i++) {
                if (input[i] == '.') { waitLowerChar = true; continue; }
                if (waitLowerChar && char.IsLower(input[i])) { input[i] = char.ToUpper(input[i]); waitLowerChar = false; }            
            }
 
            return new string(input);
        }
    }
}
0
greg zakharov
Покинул форум
1954 / 827 / 239
Регистрация: 07.05.2015
Сообщений: 1,658
08.02.2016, 19:55 10
Если каждое слово через пробел делать заглавным, то:
C#
1
CultureInfo.CurrentCulture.TextInfo.ToTitleCase("некая строка");
Если же только первое слово в предложении, то можно использовать примерно следующий подход:
C#
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
 
namespace Capitalize {
  internal sealed class frmMain : Form {
    public frmMain() {
      InitializeComponent();
    }
    
    private TextBox txtEdit;
    private StringBuilder sb = new StringBuilder();
    
    private void InitializeComponent() {
      this.txtEdit = new TextBox() {
        Location = new Point(13, 13),
        Width = 270
      };
      this.txtEdit.TextChanged += (s, e) => {
        if ((Char)txtEdit.Text.Last() == '.') {
          sb.Length = 0;
          sb.Capacity = 0;
          
          txtEdit.Text.Split('.').ToList().ForEach(i => {
            if (!String.IsNullOrEmpty(i)) {
              i = i.Trim();
              sb.Append(i.Remove(1).ToUpper() + i.Substring(1) + ". ");
            }
          });
          txtEdit.Text = sb.ToString();
          txtEdit.SelectionStart = txtEdit.Text.Length;
          txtEdit.SelectionLength = 0;
        }
      };
      this.ClientSize = new Size(300, 70);
      this.Controls.Add(this.txtEdit);
      this.StartPosition = FormStartPosition.CenterScreen;
      this.Text = "Capitalize";
    }
  }
  
  internal sealed class Program {
    [STAThread]
    static void Main() {
      Application.EnableVisualStyles();
      Application.Run(new frmMain());
    }
  }
}
То есть, сразу после того, как будет поставлена точка, первое слово в предложении "пишется" с заглавной буквы.
0
zna926
336 / 311 / 254
Регистрация: 24.09.2013
Сообщений: 1,844
Записей в блоге: 1
09.02.2016, 01:18 11
За точкой после пробела будут заглавные Бувы

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Forms Code
{
       private void button1_Click(object sender, EventArgs e)
       {
          String s, s1, s2;
           int n;
            s = "asedrf. yuij. kmedrf. ghjfve";
             n = s.Length;
              for (int i = 0; i < n; i++)
              {
                s1 = s.Substring(i, 1);
                if (s1 == ".")
                {
                  s2 = (s.Substring(i + 2, 1).ToUpper());
                   s = s.Replace(s.Substring(i + 2, 1), s2);                                     
                }
 
            }
              textBox1.Text = s;
       }
}
0
Yurui
11 / 11 / 7
Регистрация: 24.04.2015
Сообщений: 51
Завершенные тесты: 1
09.02.2016, 10:49 12
Karsar123, я видимо не совсем понятно написал, оставь только
C#
1
2
3
4
5
6
7
8
9
10
11
        bool upper = false;
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((upper) && (e.KeyChar != 32))
            {
                e.KeyChar = char.Parse(e.KeyChar.ToString().ToUpper());
                upper = false;
            }
            if (e.KeyChar == 46)
                upper = true;            
        }
остальное не нужно, тогда после каждой точки первый не пробельный символ будет заглавным, если нужно чтоб и после пробела (без точки) слово было с заглавной буквы,
C#
1
if (e.KeyChar == 46)
замени на
C#
1
if ((e.KeyChar == 46) || (e.KeyChar == 32))
0
ignatevMKSMMK2
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 10
31.05.2017, 18:26 13
Цитата Сообщение от Yurui Посмотреть сообщение
остальное не нужно, тогда после каждой точки первый не пробельный символ будет заглавным, если нужно чтоб и после пробела (без точки) слово было с заглавной буквы,
а не подскажешь как сделать чтобы после точки пробел не ставился вообще?
в другом месте сделал чтобы не ставились русские буквы таким образом
C#
1
2
char c = e.KeyChar;
e.Handled = c >= 'а' && c <= 'я' || c >= 'А' && c <= 'Я' || c == 'ё' || c == 'Ё' ;
а как запретить пробел после точки не додумаюсь
0
31.05.2017, 18:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 18:26

Сделать буквы вместо цифр
Нужно чтобы число, диапазона от 1 до 30 заменялось соответсвующей буквой. 1...

Напечатать текст заглавными буквами
Добрый день. Дан текст из строчных русских букв из строчных русских букв....

Как сделать чтобы старые точки на графике не стирались?
На графике после задания точек старые стираются,как сделать чтобы они...


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

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

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