Wykrywanie słów zawartych w ""

0

Witam chce wypisywać zdania zawarte w "".
Wpadłem na pomysł aby z pliku wczytywać poszczególne słowa do tablicy a potem te słowa dzielić na znaki. Po wykryciu znaku " na 1 pozycji tablicy wypisze wszystkie znaki do momentu wykrycia znaku " na końcu tablicy. Niestety działa mi to wadliwie. Gdzie robię błąd?

import java.io.IOException;

public class inl {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		   FileReader fileReader = new FileReader("tekst.txt");
		  BufferedReader bufferedReader = new BufferedReader(fileReader);
		 
                  char[] znaki = null;
		  String tekst = bufferedReader.readLine();
		  String wynik1[] = null;
		  wynik1 = tekst.split(" ");
		  int kod_ascii1 = 0;
		  int kod_ascii2 = 0;
		  
		  for (String slowo : wynik1) {
				znaki = slowo.toCharArray();
				//System.out.println(znaki);
				
				kod_ascii1= (int) znaki[0];
				kod_ascii2 = (int) znaki[znaki.length-1];
				if (kod_ascii1 > 33 && kod_ascii1 < 35){   //znalesc na poczatku "
					while (kod_ascii2 < 34 && kod_ascii2 > 34) //dopoki na koncu nie pojawi sie "
					{
						System.out.print(znaki); //wypisz znaki
					}
					System.out.println();
				}
		  }
		
		 //System.out.println(kod_ascii1);
		 //System.out.println(kod_ascii2);
		 //System.out.println(znaki);
				
		  bufferedReader.close();
		
	}

}
0
int kod_ascii1;
int kod_ascii2;

if (kod_ascii1 > 33 && kod_ascii1 < 35){   //czyli ==34?
    while (kod_ascii2 < 34 && kod_ascii2 > 34) //to nigdy się nie wykona

Chyba ktoś nie ogarnia.

0

zapoznaj sie z metoda split przy stringach , stringtokenizer , regexami oraz pattern i matcherem i znajdziesz dobdry sposob. W skrocie albo dzielisz linie na mniejsze podług separatora albo ladujesz tekst w jakies ilosci i wysxukujesz charakterystycznych znakow

1

Może coś takiego?

package com.example.java;

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
        String tekst = "witam \"Pana kolego\", nazywam \"się Michał\", a ty \"jak?"; // tekst wejsciowy
        String quotedString = "";

    	int numOfQuotes = 0;	// liczba cudzyslowow
    	char charToFind = '\"';	// znak do znalezienia
    	
    	for(char c : tekst.toCharArray()){	// petla majaca na celu okreslenie liczby wystapien szukanego znaku
    		if(c == charToFind)
    			numOfQuotes++;
    	}
    	
    	if(numOfQuotes % 2 != 0)	// w przypadku gdy liczba cudzyslowow jest nieparzysta -> usuwamy jeden
    		numOfQuotes--;
    	
    	for(int i = 0; i < numOfQuotes/2; i++){	// dla kazdej pary cudzyslowow wycinamy tekst w ktorym sie pojawiaja
    		
    		int indexOfStart = tekst.indexOf("\"");
    		int indexOfEnd = tekst.indexOf("\"", indexOfStart + 1);
    		quotedString = tekst.substring(indexOfStart + 1, indexOfEnd); 
    		tekst = tekst.substring(indexOfEnd + 1);
    		System.out.print(quotedString + "\n");
    		
    	}
   
 
	}

}

Output:
Pana kolego
się Michał

0

Użyj Scannera + regexpów, StringTokenizer sucks

0

@diamen coś cudownego o to mi chodziło:) dzięki, będę teraz walczył aby również wykrywał słowa napisane kursywą itp:)

0

Ok znalazłem coś.
Program dobrze radzi sobie z znakiem ' /" ', Natomiast kiedy używamy ' „” ', to już ich nie wykrywa. Jak sprawić aby program zaczął odczytywać również tekst z zawartymi takimi znakami?

1 użytkowników online, w tym zalogowanych: 0, gości: 1