Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.08.2019
Сообщений: 6
1

Программа, которая считывает русский текст из файла и выводит на экран предложения, начинающиеся с гласных букв

28.10.2019, 11:14. Показов 844. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код программы практически готов, единственное, что я не могу понять - как сделать так, чтобы метод split не "глотал" символы, на которые разделяет, то есть чтобы он разделял текст, но символы, с помощью которых он делит, никуда не исчезали. Ибо в моем случае проблема в том, что я не могу адекватно определить на какой знак препинания заканчивается предложение. И в черновом варианте в конце предложений я всегда печатаю точку:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = File.ReadAllText("C:\\Users\\tumur\\Desktop\\1.txt", System.Text.Encoding.Default);
            string[] textSplit = text.Split('.');//  \n перенос строки
            for (int i = 0; i < textSplit.Length - 1; i++)
            {
                if (i == 0)
                {
                    if (textSplit[i][0] == 'а' ||
                        textSplit[i][0] == 'А' ||
                        textSplit[i][0] == 'о' ||
                        textSplit[i][0] == 'О' ||
                        textSplit[i][0] == 'у' ||
                        textSplit[i][0] == 'У' ||
                        textSplit[i][0] == 'ы' ||
                        textSplit[i][0] == 'Ы' ||
                        textSplit[i][0] == 'Э' ||
                        textSplit[i][0] == 'э' ||
                        textSplit[i][0] == 'я' ||
                        textSplit[i][0] == 'Я' ||
                        textSplit[i][0] == 'ё' ||
                        textSplit[i][0] == 'Ё' ||
                        textSplit[i][0] == 'ю' ||
                        textSplit[i][0] == 'Ю' ||
                        textSplit[i][0] == 'И' ||
                        textSplit[i][0] == 'и' ||
                        textSplit[i][0] == 'е' ||
                        textSplit[i][0] == 'Е')
                    {
                        Console.WriteLine(textSplit[i] + '.');
                    }
                }
                else if (textSplit[i][1] == 'а' ||
                            textSplit[i][1] == 'А' ||
                            textSplit[i][1] == 'о' ||
                            textSplit[i][1] == 'О' ||
                            textSplit[i][1] == 'у' ||
                            textSplit[i][1] == 'У' ||
                            textSplit[i][1] == 'ы' ||
                            textSplit[i][1] == 'Ы' ||
                            textSplit[i][1] == 'Э' ||
                            textSplit[i][1] == 'э' ||
                            textSplit[i][1] == 'я' ||
                            textSplit[i][1] == 'Я' ||
                            textSplit[i][1] == 'ё' ||
                            textSplit[i][1] == 'Ё' ||
                            textSplit[i][1] == 'ю' ||
                            textSplit[i][1] == 'Ю' ||
                            textSplit[i][1] == 'И' ||
                            textSplit[i][1] == 'и' ||
                            textSplit[i][1] == 'е' ||
                            textSplit[i][1] == 'Е')
                {
                    Console.WriteLine(textSplit[i] + '.');
                }
            }
            Console.ReadKey();
        }
    }
}
Есть какие предложения, как можно пофиксить траблу со знаками препинания в конце предложения?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2019, 11:14
Ответы с готовыми решениями:

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

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

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

Программа которая считывает текст из файла и выводит на экран предложения начинающиеся с тире, перед ним стоять только п
Я сделал, чтоб работало с одной строкой и выводит, но потом преподаватель попросил сделать на...

5
Модератор
Эксперт .NET
15464 / 10710 / 2786
Регистрация: 21.04.2018
Сообщений: 31,529
Записей в блоге: 2
28.10.2019, 11:30 2
plast1kich, необходимо делать свой кастомным метод.
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
28.10.2019, 11:47 3
если немного доработать, то будет работать
C#
1
2
3
4
string text = File.ReadAllText(@"C:\Users\tumur\Desktop\1.txt"); 
            char[] vowels = { 'а', 'о', 'у', 'ы', 'э', 'и', 'я', 'ю', 'е', 'ё' };
            string[] result = text.Split('.').Select(x => x + ".").Where(x => vowels.Contains(char.ToLower(x.ElementAt(0)))).ToArray();
            Console.WriteLine(string.Join("\n", result));
0
Модератор
Эксперт .NET
15464 / 10710 / 2786
Регистрация: 21.04.2018
Сообщений: 31,529
Записей в блоге: 2
28.10.2019, 12:00 4
Immo, не будет.
Нужно разделение по нескольким символам разделителям.
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
28.10.2019, 12:16 5
Цитата Сообщение от plast1kich Посмотреть сообщение
но символы, с помощью которых он делит, никуда не исчезали
например, можно взять какой-нибудь символ, который точно не встретится в вашей культуре и заменить знаки препинание на сочетание с этим символом. Далее разделять уже по символу.
C#
1
2
3
4
5
6
7
8
9
10
        public static string[] SuperSplit(string str, char[] chars)
        {
            string chStr;
            foreach(var ch in chars)
            {
                chStr = ch.ToString();
                str = str.Replace(chStr, chStr + '漢');
            }
            return str.Split('漢');
        }
Добавлено через 4 минуты
там за место 'жјў' иероглиф китайский
0
Модератор
Эксперт .NET
15464 / 10710 / 2786
Регистрация: 21.04.2018
Сообщений: 31,529
Записей в блоге: 2
28.10.2019, 12:33 6
Вот кастомный метод Split с сохранением разделителей
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static List<string> Split (string source, params char [] separators)
{
      List<string> ret = new List<string>();
      StringBuilder line = new StringBuilder(source.Length);
 
       foreach (char ch in source)
       {
               line.Append(ch);
               if (separators. Contains (ch) )
               {
                        ret.Add(line. ToString ());
                        line. Clear ();
                }
        }
        return ret;
}
Добавлено через 16 минут
Также проверка наличия символа в заданной строке лучше делать так
C#
1
if ("аоуыэияюеё". Contains (Char.ToLower(textSplit[i][0])))
0
28.10.2019, 12:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2019, 12:33
Помогаю со студенческими работами здесь

Написать программу, которая считывает из файла и выводит на экран слова, начинающиеся с гласных букв
static void Main(string args) { string s=&quot;&quot;; string mas = new...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru