Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Meekwest
0 / 0 / 0
Регистрация: 27.12.2018
Сообщений: 4
1

Регулярки

28.11.2019, 14:46. Просмотров 178. Ответов 1
Метки нет (Все метки)

Приветствую всех. Нужно сделать так, чтобы программа считывала текст, который вводится в поле с клавиатуры, далее прогоняла каждую строчку. Если в строке есть двузначное число, то она эту строчку должна удалить. У меня работает только так:
вход:
ab23.
23.
a23b.
выход:
ab23.

a23b.

Оно не убирает строчки, в которых помимо двузначного числа есть еще какие-либо символы. Как исправить, подскажите, пожалуйста?


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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace lb3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        
 
        private void button1_Click(object sender, EventArgs e)
        {
           
            textBox2.Clear();
            string s = textBox1.Text;
            string[] sentences = { };
            char[] sym = { '.', '!', '?' };
            sentences = s.Split('.');
            List<int> nmbr = new List<int> { };
            int start = 10;
            for (int i = 0; i < 90; i++)
            {
                nmbr.Add(start);
                start++;
            }
            for (int i = 0; i < sentences.Length ; i++)
            {
                 string pattern = @"(^[^0-9])[1-9][0-9]($|[^0-9])";
                //string pattern = @"(^|\s)[1-9]\d?(\s|$)";
                //string pattern = @"(^|[^0-9])[1-9][0-9]($|[^0-9])";
                Regex r = new Regex(pattern);
               
 
 
 
                if(!r.IsMatch(sentences[i]))
                {
                    textBox2.Text = textBox2.Text + sentences[i] + '.';
                }
                /*for (int j = 0; j < 90; j++)
                {
                    if (!sentences[i].Contains(Convert.ToString(nmbr[j])))
                    {
                        sentences[i].
                        //textBox2.Text = textBox2.Text + sentences[i] + '.';
                        break;
                    }
                    else
                        continue;
                }*/
 
                /*
                if (nl == false)
                {
                    textBox2.Text =  sentences[i] + Environment.NewLine;
                    nl = false;
                   
                }*/
 
 
            }
            //string text = Console.ReadLine();
            //text = "Это предложение не содержит запятых. Предложение, содержащие запятую. Еще одно предложение без запятых! Запятые, запятые, запятые.";
            /*string[] sentences = s.Split(new[] { '.', '!', '?' });
            foreach (string sentence in sentences)
            {
                if (!sentence.Contains(','))
                {
                    //Console.WriteLine(sentence.Trim());
                    textBox2.Text = sentence.Trim();
                }
            }
            */
 
 
 
 
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string str = textBox3.Text;
            textBox4.Clear();
            if (str.Length % 2 == 1)
            {
                int sym = str.Length / 2 ;
                textBox4.Text = str.Remove(sym, 1); 
            }
            else
            {
                int sym = str.Length / 2;
                textBox4.Text = str.Remove(sym-1, 2);
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            OpenFileDialog of = new OpenFileDialog();
            if (of.ShowDialog() == DialogResult.OK)
            {
                string filePath1 = @"D:\f.txt";
                string filePath2 = @"D:\g.txt";
                string[] words = { };
 
 
                StreamReader f = new StreamReader(filePath1, Encoding.Default);
                while (f.Peek() >= 0)
                {
                    string str = f.ReadLine();
                     words = str.Split(' ');
                }
                for (int i= 0; i < words.Length; i++ )
                {
                    StringBuilder str = new StringBuilder(words[i]);
                    int x = words[i][0];
                    int xx = x - 32;
                    str.Replace((char)x, (char)xx, 0, 1);
                    words[i] = Convert.ToString(str);
                }
                StreamWriter SW = new StreamWriter(new FileStream(filePath2, FileMode.Create, FileAccess.Write));
                for (int i = 0; i < words.Length; i++)
                {
                    SW.Write(words[i] + ' ');
                }
                SW.Close();
            }
        }
    }
}
Пробовал экспериментировать с string pattern, но не могу найти идеальное. Только убирает двузначные числа, если больше в строке символов нет.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2019, 14:46
Ответы с готовыми решениями:

регулярки в С/С++
поставил pcre. Вобщем такие вот дела: char pattern = &quot;&lt;a.* href=\&quot;(.*)\&quot;&gt;(.*)&lt;/a&gt;&quot;; ...

регулярки
Всем привет. Не могу понять в чем проблема. Почему вот это print(&quot;Hello World&quot;) result =...

1

sau
2331 / 1808 / 316
Регистрация: 22.07.2011
Сообщений: 6,949
Завершенные тесты: 1
29.11.2019, 22:05 2
Цитата Сообщение от Meekwest Посмотреть сообщение
Если в строке есть двузначное число
C#
1
Regex.IsMatch(input, @"\d{2}");
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2019, 22:05

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

Регулярки
Добрый день. Никак не соображу, как превратить &quot;\Fsimplex;\c204;\Q5;\W0.7;\T0.85;Test...

регулярки
Напишите скрипт на основе регулярных выражений, определяющий является ли введенная строка строкой...


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

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

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