Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 10 Stränghantering. java.lang.String En sträng består av ett antal tecken Strängar i Java hanteras som objekt av klassen String En sträng.

Liknande presentationer


En presentation över ämnet: "Föreläsning 10 Stränghantering. java.lang.String En sträng består av ett antal tecken Strängar i Java hanteras som objekt av klassen String En sträng."— Presentationens avskrift:

1 Föreläsning 10 Stränghantering

2 java.lang.String En sträng består av ett antal tecken Strängar i Java hanteras som objekt av klassen String En sträng kan inte modifieras efter att den har skapats! String - value : char[] - count : int + length(): int + charAt(int): char + indexOf(char): int … En sträng har: Ett värde och en längd Ett antal metoder

3 java.lang.String Krävs ingen hantering av en strängs storlek eller avslutande null-tecken Liknar till en viss del primitiva typer Kan vara en konstant Kan tilldelas en strängkonstant "Programmering i Java" // en strängkonstant String s = "Programmering i Java"; En strängvariabel är en referens till ett sträng-objekt

4 Skapa Strängar Några användbara konstruktorer: public String() public String(String en_annan_sträng) public String(StringBuffer en_stringbuffer) String s1 = new String(); String s2 = new String("Java"); s1 s1 : String value = "" count = 0 + length(): int + charAt(int): char + indexOf(char): int … s2 : String value = "Java" count = 4 + length(): int + charAt(int): char + indexOf(char): int … s2

5 Strängkonstanter "tecken omslutna av dubbel-fnuttar" En konstant, t.ex "strängar" ses som en referens till ett String-objekt. Alla förekomster av "strängar" i pro- grammet refererar till samma objekt "strängar" "strängar" : String value = "strängar" count = 8 + length(): int + charAt(int): char + indexOf(char): int …

6 Addera Strängar Ytterligare ett sätt att skapa strängar är att addera två andra + operatorn används för detta String efterNamn = "Karlsson"; String namn = "Kalle " + efternamn; System.out.println(namn);// Kalle Karlsson Primitiva typer konverteras om automatiskt vid strängaddition System.out.println("5 + 5 = " ); // = 55 System.out.println("5 + 5 = " + (5 + 5)); // = 10 ("5 + 5 = " + "5" + "5") ("5 + 5 = " + "10")

7 Metoden length() Antalet tecken i en sträng är lika med strängens längd String s1 = "";// s1.length()  0 String s2 = "Java";// s2.length()  4 String s3 = "kursen"; // s3.length()  6 String s4 = s2 + s3;// s4.length()  10 Positionen av ett visst tecken i strängen kallas för dess index Första tecknet har index nesrukavaJ tecken index

8 Metoden charAt() charAt() används för att komma åt ett tecken på ett visst index nesrukavaJ public char charAt(int index) s1.charAt(0);s1.charAt(4);s1.charAt(s1.length() - 1); Exempel: String s1 = "Javakursen"; char ch = s1.charAt(4); System.out.println(ch);// Skriver ut k

9 Metoden substring() substring() används om man vill komma åt fler än ett tecken nesrukavaJ public String substring(int startindex) public String substring(int startindex, int slutindex) Exempel: String s1 = "Javakursen"; String s2 = s1.substring(7);// sen String s3 = s1.substring(4, 7);// kur s1.substring(4, 7)

10 Metoden indexOf() Söker från vänster till höger efter ett tecken eller substring Returnerar tecknets index eller –1 public int indexOf(char tecken) public int indexOf(char tecken, int startindex) public int indexOf(String string) public int indexOf(String string, int startindex) nesrukavaJ String s1 = ""; s1.indexOf('a') == -1 String s2 = "Java"; s2.indexOf('a') == 1 String s3 = "kursen"; s3.indexOf("va") == 1 String s4 = s2 + s3; s4.indexOf("va") == 2 s4.indexOf('a', 2) == 3

11 Metoden lastIndexOf() lastIndexOf söker från höger till vänster efter tecken eller substring Returnerar tecknets index eller –1 public int lastIndexOf(char tecken) public int lastIndexOf(char tecken, int startindex) public int lastIndexOf(String string) public int lastIndexOf(String string, int startindex) !avaj avaJ String s1 = ""; s1.lastIndexOf('a') == -1 String s2 = "Java"; s2.lastIndexOf("va") == 2 String s3 = " java!"; s3.lastIndexOf('a') == 4 String s4 = s2 + s3; s4.lastIndexOf("va") == 7 s4.lastIndexOf("va", 5) == 2

12 Jämföra strängar Tre metoder för att jämföra strängar public boolean equals(Object anObject) // Överlagring public boolean equalsIgnoreCase(String anotherString) public int compareTo(String anotherString) Två strängar är lika om de inne- håller samma tecken i rätt ordning String s1 = "Java"; String s2 = "java"; s1.equals(s2); // false s1.equalsIgnoreCase(s2); // true s1 == s2; // false (fel sätt) s1.compareTo("C++"); // returnerar 1 s1.compareTo("Pascal"); // returnerar -1 == kollar om det är samma referens

13 Fler Metoder Klassen String innehåller även dessa metoder (används inte lika ofta) boolean endsWith(String suffix) boolean startsWith(String prefix) String toUpperCase() String toLowerCase() String trim() String replace(char oldChar, char newChar) String s1 = "Javakursen"; boolean end = s1.endsWith("sen"); // true boolean start = s1.startsWith("Java"); // true s1 = s1.toUpperCase(); // "JAVAKURSEN" s1 = s1.toLowerCase(); // "javakursen" s1 = " Javakursen ".trim(); // "Javakursen" s1.replace('a', 'o'); // "Jovokursen"

14 Effektivitet Strängar i Java kan inte modifieras När ett värde tilldelas en sträng skapas ett nytt objekt -tidskrävande String resultat = ""; for (int i = 0; i < 10; i++) resultat = resultat + i; Med System.currentTimeMillis() kan vi mäta tiden för en operation long start = System.currentTimeMillis(); // operation som ska mätas long end = System.currentTimeMillis(); long tid = end – start; // antal ms det tog

15 java.lang.StringBuffer Är strängar som kan modifieras Några konstruktorer: public StringBuffer() public StringBuffer(String en_existerande_sträng) Några metoder: public StringBuffer append(Type t) // lägger till sist public StringBuffer insert(int offset, Type t) // sätter in vid offset public StringBuffer delete(int start, int end) // tar bort tecknen mellan public StringBuffer reverse() // vänder - java  avaj public String toString() // StringBuffer som String public char charAt(int index) // returnerar tecknet vid index public int indexOf(String str) // index där str finns (vänster  höger) public int lastIndexOf(String str) // index där str finns (höger  vänster) public int length() // antal tecken i aktuell StringBuffer public String substring(int start) // en substräng från start till slutet

16 java.util.StringTokenizer Används för att dela upp en sträng i delar (tokens), t.ex ta fram orden ur en mening Normalt delas strängen vid mellan- slag, tabb och radbyte Man kan också ange vilka tecken strängen ska delas vid.

17 StringTokenizer (forts) 1. str är strängen som ska delas upp 2. Delim anger vilka tecken str ska delas vid 3. Returnerar true om det finns några tokens kvar att plocka fram ur strängen 4. Returnerar nästa token 5. Räknar ut hur många tokens det finns kvar i strängen // Några konstruktorer public StringTokenizer(String str) // 1 public StringTokenizer(String str, String delim) // 2 // Några metoder public boolean hasMoreTokens() // 3 public String nextToken() // 4 public int countTokens() // 5

18 StringTokenizer (forts) Default-avgränsare är whitespace String s = "Detta är en meningslös mening."; StringTokenizer st = new StringTokenizer(s); String s = "http://www.itm.mh.se/~roberi/index.html"; StringTokenizer st = new StringTokenizer(s, ":/"); http ~roberi index.html Tokens Detta är en meningslös mening. Tokens Kan ange egna avgränsare

19 StringTokenizer (forts) Exempel import java.util.StringTokenizer; public class RaknaOrd { public static void main(String[] args) { String mening = "Detta är en meningslös mening"; StringTokenizer st = new StringTokenizer(mening); int antalOrd = st.countTokens(); System.out.println("Antal ord: " + antalOrd); // Skriver ut orden while (st.hasMoreTokens()) { System.out.println(st.nextToken()); } } }


Ladda ner ppt "Föreläsning 10 Stränghantering. java.lang.String En sträng består av ett antal tecken Strängar i Java hanteras som objekt av klassen String En sträng."

Liknande presentationer


Google-annonser