Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Mafko
0 / 0 / 1
Регистрация: 18.05.2016
Сообщений: 4
1

Обработка текстов

18.05.2016, 21:52. Просмотров 884. Ответов 1
Метки нет (Все метки)

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

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

Java
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
import java.io.*;
import java.util.Scanner;
 
 
 
public class ReplaceSubString {
 
    public static void main(String[] args) throws IOException {
        try {
            String s = "";
            File file = new File("C:\\Users\\Маша\\IdeaProjects\\TextEdit\\Task5-15\\data2.txt");
            InputStreamReader fr=new InputStreamReader(new FileInputStream(file),"windows-1251");
            BufferedReader reader = new BufferedReader(fr);
 
            while ((reader.readLine())!=null){
                s+=reader.readLine()+" ";
 
                }
 
            String[] sentence = null;
            sentence=s.split("[\\.!?]");
 
 
 
            System.out.println(s);
 
 
 
 
 
        } catch (IOException e) {
            System.out.println("I/O Error: " + e);
        }
 
    }
}
0
Вложения
Тип файла: txt data.txt (7.2 Кб, 1 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2016, 21:52
Ответы с готовыми решениями:

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

Обработка текстов
Задан текст, состоящий из строк произвольной длины. Строки разделяются одним или несколькими...

Обработка текстов
Нужно поменять все ати на али Написал как-то так #include <string.h> int main() { char...

Обработка текстов
Дано текст, содержащий буквы и пробелы. Найти и напечатать слова и их количество, длина которых...

1
Mafko
0 / 0 / 1
Регистрация: 18.05.2016
Сообщений: 4
19.05.2016, 14:37  [ТС] 2
В некотором предложении текста слова заданной длинны заменить указанной подстрокой, длинна которой может не совпадать с длиной слова.

Написала как-то.
Но мне кажется получилась хрень.
На самом деле мне нужен список абзацев, внутри - предложения, внутри слова и знаки препинания.

Как поправить?
Java
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
import java.io.*;
import java.util.Scanner;
 
 
 
public class ReplaceSubString {
 
    public static void main(String[] args) throws IOException {
        try {
            //Cчитываем текст
            String s = "";
            File file = new File("C:\\Users\\Маша\\IdeaProjects\\TextEdit\\Task5-15\\data.txt");
            InputStreamReader fr=new InputStreamReader(new FileInputStream(file),"windows-1251");
            BufferedReader reader = new BufferedReader(fr);
 
            while ((reader.readLine())!=null){
                s+=reader.readLine()+" ";
 
                }
 
            //Текст разбивается на предложения
 
            String[] sentence = null;
            sentence=s.split("[\\.!?]");
 
            //Ввод с клавиатуры номера предложения ,которое будет заменяться
            BufferedReader reader1 = new BufferedReader(new InputStreamReader(System.in));
            int i=Integer.parseInt(reader1.readLine());
            int n=sentence.length;
 
 
            if (i<0 || i>n) {
                System.out.println("Выбранное предложение выходит за границы текста");
                            }
 
            String thissentence = sentence[i];
 
            //Разбиваем строку на слова
            String[] words = null;
            words=thissentence.split("[\\p{P} \\t\\n\\r]");
 
            //Считываем с клавиатуры длинну слов, которые надо заменить, и замещающий текст
            int wordlength=Integer.parseInt(reader1.readLine());
            String newword=reader1.readLine();
 
            //Для каждого слова считаем число символов. Если оно совпадает с wordlength, то заменяем на newword
 
            for (int j=0;j<words.length;j++){
                if (words[j].length()==wordlength){
                    words[j]=newword;
                     }
                System.out.print(words[j]+" ");
 
            }
 
            System.out.println(thissentence);
 
 
 
        } catch (IOException e) {
            System.out.println("I/O Error: " + e);
        }
 
    }
 
 
}
Добавлено через 15 часов 34 минуты
Переписала.

Хочу сделать класс TextPart и его расширения - Текс, Абзац, Предложение, Слово, Знак препинания.

Получилось сделать класс текст.
1.Как сделать класс Абзац так, чтобы он брал текст из класса Текст и делил на предложения?

Моя идея - прочитать посимвольно: Если не знак препинания, то записать символ в строку. После того, как попался знак конца предложения - полученную строку в элемент ArrayList.

2. Можно ли сделать в классе Абзац конструктор , который берет на входе Текст из класса текст?

3. Я правильно понимаю, что у меня все классы должны наследоваться из одного класса TextPart?
Или Абзац наследуется от текста, а текст от Абзаца?

Java
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
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
 
class TextEdit{
 
public static void main(String[] args){
 
 
String s="Раз, два, три, четыре, пять - вышел зайчик погулять!";
String s1="А я не зайчик?";
String s2="Я тоже хочу стать зайчиком.";
 
s=s+"\t"+s1+"\t"+s2+"\t";
 
 
 
Paragraph tp= new Paragraph(s);
System.out.print(tp.getParagraph());
 
 
}
 
//
public static class Paragraph extends TextPart{
 
private static ArrayList<String> paragraphs=null;
private static String text;
 
public Paragraph(String s){
text=s;
}
 
public String getParagraph(){
 
return "";
}
 
 
 
 
 
}
 
 
 
 
//
 
public static class Text extends TextPart{
 
private static String text;
 
public Text(String s){
text=s;
}
 
public String getText(){
return text;
}
 
 
}
 
 
 
public static class TextPart {
    public ArrayList<String> texppart ()
    {
        return null;   
    }
    
        
}
 
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2016, 14:37

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

Обработка текстов: Элементы Лексического анализа
Помогите пожалуйста с лабораторной.. 1.Надо разработать программу,которая выполняет частичный...

Обработка текстов, текстовое поле формы.
Предоставить пользователю возможность ввода нескольких строк текста в многострочное текстовое поле...

Построчная обработка больших ascii текстов
В распоряжении: Access97 Задача: Научиться обрабатывать построчно большие ascii тексты (обычная...

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


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

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

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