Dwunasta prezentacja do kursu „Wstęp do programowania”.
Treść:
- Praca z łańcuchami znaków (
String
), - podstawowe wyrażenia regularne (regexp),
ArrayList
cd.,- zapis i odczyt danych z pliku tekstowego
Ta strona jest częścią starego kursu Javy. Nowy kurs, pt. “Programowanie w Javie z elementami bioinformatyki dla poczatkujących”, jest znacznie rozszerzony i dostosowany fo Javy 8. Jego forma jest także znacznie bardziej przystępna dla korzystających wyłącznie z treści on-line. Dostępne materiały znajdziesz tutaj.
- Pobierz prezentację w formacie .pdf
- Pobierz „ściągę” z wybranymi wyrażeniami regularnymi w formacie .pdf
Żródła
Praca ze String
-iem
Wybrane metody dostępne w obiektach klasy String
, m in: zmiana wielkości liter, zamiana fragmentów tekstu, cięcie tekstu.
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 |
public class Tekst { public static void main(String[] args) { String tekst = "Chromosom"; System.out.println("Tekst : "+tekst); // testy System.out.println("equals(\"chromosom\") : "+tekst.equals("chromosom")); System.out.println("equalsIgnoreCase(\"chromosom\") : "+tekst.equalsIgnoreCase("chromosom")); System.out.println("contains(\"omo\") : "+tekst.contains("omo")); System.out.println("startsWith(\"Chro\") : "+tekst.startsWith("Chro")); System.out.println("endsWith(\"Chro\") : "+tekst.endsWith("Chro")); System.out.println("length() : "+tekst.length()); // modyfikacje System.out.println("toLowerCase() : "+tekst.toLowerCase()); System.out.println("toUpperCase() : "+tekst.toUpperCase()); System.out.println("replace(\"osom\", \"atyda\") : "+tekst.replace("osom", "atyda")); System.out.println("replaceFirst(\"o\", \"i\") : "+tekst.replaceFirst("o", "i")); System.out.println("replaceAll(\"o\", \"i\") : "+tekst.replaceAll("o", "i")); System.out.println("concat(\"owy\") : "+tekst.concat("owy")); // wycinanie i dzielenie System.out.println("substring(4) : "+tekst.substring(4)); System.out.println("substring(3,6) : "+tekst.substring(3,6)); System.out.println("split(\"o\") : "+tekst.split("o")); String[] teksty = tekst.split("o"); for (String t : teksty) System.out.print(t+"#"); System.out.println(); System.out.println("split(\"o\",2) : "+tekst.split("o",2)); String[] teksty2 = tekst.split("o",2); for (String t : teksty2) System.out.print(t+"#"); System.out.println(); tekst = " "+tekst+" "; System.out.println("tekst = \" \"+tekst+\" \" : "+tekst); System.out.println("trim() : "+tekst.trim()); } } |
Wyrażenia regularne
Przykłady zastosowań niektórych wyrażeń regularnych.
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 |
import java.util.ArrayList; public class WyrazeniaRegularne { public static void main(String[] args) { String tekst = "Chromosom"; System.out.println("tekst : "+tekst); // testy // Jedna nie cyfra System.out.println("matches(\"\\\\D\") : "+tekst.matches("\\D")); // Jedna lub więcej nie cyfr System.out.println("matches(\"\\\\D+\") : "+tekst.matches("\\D+")); // Jedna lub więcej cyfr System.out.println("matches(\"\\\\d+\") : "+tekst.matches("\\d+")); // Jedna lub więcej nie cyfr a potem zero lub więcej cyfr System.out.println("matches(\"\\\\D+\\\\d*\") : "+tekst.matches("\\D+\\d*")); // Jedna lub więcej nie cyfr a potem jedna lub więcej cyfr System.out.println("matches(\"\\\\D+\\\\d+\") : "+tekst.matches("\\D+\\d+")); // Jedna lub więcej nie cyfr a potem zero lub jedna cyfra System.out.println("matches(\"\\\\D+\\\\d?\") : "+tekst.matches("\\D+\\d?")); String tekst2 = "Chromosom2"; System.out.println("tekst2 : "+tekst2); // Jedna lub więcej nie cyfr a potem jedna lub więcej cyfr System.out.println("matches(\"\\\\D+\\\\d+\") : "+tekst2.matches("\\D+\\d+")); // Jedna lub więcej nie cyfr a potem zero lub jedna cyfra System.out.println("matches(\"\\\\D+\\\\d?\") : "+tekst.matches("\\D+\\d?")); // Jeden lub więcej znaków które mogą być częścią słowa (litery, cyfry i znak _) System.out.println("matches(\"\\\\w+\") : "+tekst2.matches("\\w+")); // Jeden lub więcej znaków które nie mogą być częścią słowa (nie litery, cyfry i znak _) System.out.println("matches(\"\\\\W+\") : "+tekst2.matches("\\W+")); // Jeden lub więcej białych znaków (spacje, tabulatory) System.out.println("matches(\"\\\\s+\") : "+tekst2.matches("\\s+")); // Jeden lub więcej nie białych znaków (nie spacje, tabulatory) System.out.println("matches(\"\\\\S+\") : "+tekst2.matches("\\S+")); // Kropka oznacza jakikolwiek znak System.out.println("matches(\"Chr.m.s.m2\") : "+tekst2.matches("Chr.m.s.m2")); // .+ oznacza jeden lub więcej jakikolwiek znaków System.out.println("matches(\"Chr.+m2\") : "+tekst2.matches("Chr.+m2")); // {2,9} oznacza od dwu do dziewięciu elementów wskazanych wcześniej - tu dowolnych znaków System.out.println("matches(\"Chr.{2,9}m2\") : "+tekst2.matches("Chr.{2,9}m2")); // {2,9} oznacza conajmniej dwa elementy wskazane wcześniej - tu dowolnych znaków System.out.println("matches(\"Chr.{2,}m2\") : "+tekst2.matches("Chr.{2,}m2")); // {2,9} oznacza dwa elementy wskazane wcześniej - tu dowolnych znaków System.out.println("matches(\"Chr.{2}m2\") : "+tekst2.matches("Chr.{2}m2")); String tekst3 = "chromosom to nie jest ciało które tworzy chrom"; System.out.println(tekst3); // ^ oznacza początek linii System.out.println("replaceAll(\"^chrom\", \"CHROM\") : "+tekst3.replaceAll("^chrom", "CHROM")); // $ oznacza koniec linii System.out.println("replaceAll(\"chrom$\", \"CHROM\") : "+tekst3.replaceAll("chrom$", "CHROM")); // Dzielimy łańcuch po literce "o" po której następuje jeden znak słowa System.out.println("split(\"o\\\\w+\\\") : "+tekst3.split("o\\w+")); // uzyskujemy tablicę String[] String[] teksty = tekst3.split("o\\w"); for (String t : teksty) System.out.print(t+"#"); System.out.println(); // Dzielimy łańcuch po literce "o" przed którą występuje litera "r" lub "s" System.out.println("split(\"(r|s)o\") : "+tekst3.split("(r|s)o")); // uzyskujemy tablicę String[] teksty = tekst3.split("(r|s)o"); for (String t : teksty) System.out.print(t+"#"); System.out.println(); System.out.println("indexOf(\"o\") : "+tekst3.indexOf("o")); int i=0; ArrayList miejsca = new ArrayList(); while (i>=0) { // szukamy nastepnego łańcucha (tu literki "o") i=tekst3.indexOf("o",i); if (i>=0) { miejsca.add(i); // przesuwamy indeks o 1, aby nie odszukać ponownie tej samej litery i++; } } System.out.println(miejsca); } } |
ArrayList
– szybkie umieszczanie wartości
Dwa przykłady szybkiego umieszczania wartości w ArrayList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.util.ArrayList; import java.util.Arrays; public class ListaTekstow { public static void main(String[] args) { ArrayList<string> lista = new ArrayList<string>(Arrays.asList( "Ala", "Ola", "Ula") ); System.out.println(lista); Integer a = 1; System.out.println(a); a=a+1; System.out.println(a); ArrayList<integer> lista2 = new ArrayList<integer>(Arrays.asList(a,2,3)); System.out.println(lista2); } } |
Zapis i odczyt danych w pliku
Zapis i odczyt danych w pliku tekstowym (zob. prezentację)
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 |
import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Scanner; public class Pliki2 { public static void main(String[] args) { String plik = "dane.txt"; zapiszPlik(plik); ArrayList<double[]> dane = odczytajDaneZPliku(plik); wypiszDane(dane); } private static void zapiszPlik(String plik) { // Zapis w pliku PrintWriter out; try { out = new PrintWriter(plik); out.println("3:4:5:4:5:3:4:4:5:6:4:3:4"); out.println("4:5:7:5:5:4:4:3:7:6:8:3:4"); out.println("3:3:4:3:2:2:3:4:4:3:4:3:5"); out.println("6:6:5:8:9:7:5:4:10:9:6:7:6"); out.close(); } catch (FileNotFoundException e) { System.out.println("Brak Pliku!"); e.printStackTrace(); } } private static ArrayList<double[]> odczytajDaneZPliku(String plik) { // Odczyt pliku File plikDane = new File(plik); Scanner skaner; ArrayList<double[]> dane = new ArrayList<double[]>(); try { skaner = new Scanner(plikDane); while (skaner.hasNextLine()) { double[] dTab = podajDane(skaner.nextLine()); dane.add(dTab); } } catch (FileNotFoundException e) { System.out.println("Brak Pliku do odczytania!"); e.printStackTrace(); } return dane; } private static double[] podajDane(String linia){ // Umieszcza poszczególne dane w tablicy String [] tab = linia.split(":"); double [] data = new double[tab.length]; for (int i=0 ; i<tab.length; i++)="" {="" data[i]="Double.parseDouble(tab[i]);" }="" return="" data;="" private="" static="" void="" wypiszdane(arraylist<double[]=""> dane) { // Wypisuje dane System.out.println("Odczytane dane: "); for (double[] tab : dane) { for (double d : tab) { System.out.print(d+" "); } System.out.println(); } } } |
Leave a Reply
You must be logged in to post a comment.