STRINGS AND STRINGS MANIPULATION
CONTENTS 1. What Is String? 2. Creating and Using Strings • Declaring, Creating, Reading and Printing 3. Manipulating Strings • Comparing, Concatenating, Searching, Extracting Substrings, Splitting 4. Other String Operations • Replacing Substrings, Deleting Substrings, Changing Character Casing, Trimming
CONTENTS 5. Building and Modifying Strings • Using StringBuilder Class 6. Formatting Strings
WHAT IS STRING?
FREQUENTLY ASKED QUESTIONS FAQ • What is string ? • Why string is final? • What are the ways to declare and initialize the String Object? • What is the difference b/w Reference values and literal strings? • What is the difference b/w + opretor and concat() method? • What is the effect when comparing strings with == and equals() ? • What is Difference b/w String class and String Buffer? • What is String pool in Java? • What does intern() method do in Java? • Why String is thread-safe in Java? • What is the difference b/w System.out.println(1+2+” text”) and System.out.println(” text”+1+2) ?
WHAT IS STRING? • String is: • A sequence of characters • Each character is a Unicode character • Represented by the String (java.lang.String) data type in Java • Example: String s = "Hello, Java"; s H e l l o , J a v a
JAVA.LANG.STRING • We use java.lang.String to work with strings in Java • String objects contain an immutable (read-only) sequence of characters • Use Unicode in order to support multiple languages and alphabets • Stores strings in the dynamic memory (managed heap) • java.lang.String is class • It is reference type
JAVA.LANG.STRING • String objects are like arrays of characters (char[]) • Have fixed length (String.length()) • Elements can be accessed by index • Using charAt() method • The index is in the range 0...length()-1 String s = "Hello!"; int len = s.length(); // len = 6 char ch = s.charAt(1); // ch = 'e„` index = 0 1 2 3 4 5 s.charAt(index) = H e l l o !
STRINGS – FIRST EXAMPLE String s = “Hidaya Institute of Science & Tchnology."; System.out.printf("s = "%s"%n", s); System.out.printf("s.length() = %d%n", s.length()); for (int i = 0; i < s.length(); i++) { System.out.printf("s[%d] = %c%n", i, s.charAt(i)); }
STRINGS – FIRST EXAMPLE Live Demo
Creating and Using Strings Declaring, Creating, Reading and Printing
DECLARING STRINGS • We use Java String class for declaring string variables: String str;
CREATING STRINGS • Before initializing a string variable is equal to null • Strings can be initialized by: • Assigning a string literal to the string variable • Assigning the value of another string variable • Assigning the result of operation of type string
CREATING STRINGS (2) • Not initialized variables has value of null String s; // s is equal to null • Assigning a string literal String s = "I am string literal!"; • Assigning another string variable String s2 = s; • Assigning the result of string operation String s = "I'm " + 42 + " years old.";
READING AND PRINTING STRINGS • Reading strings from the console • Use the method input.nextLine() String s = input.nextLine(); • Printng Strings to the console • Use methods print() and println() System.out.print("Please enter your name: "); String name = input.nextLine(); System.out.printf("Hello, %s!%n", name);
MANIPULATING STRINGS Comparing, Concatenating, Searching, Extracting Substrings, Splitting
COMPARING STRINGS • There are a number of ways to compare two strings: • Dictionary-based string comparison • Case-insensitive int result = str1.compareToIgnoreCase(str2); // result == 0 if str1 equals str2 // result < 0 if str1 if before str2 // result > 0 if str1 if after str2 • Case-sensitive str1.compareTo(str2);
COMPARING STRINGS (2) • Equality checking by equalsIgnoreCase() • Performs case-insensitive compare • Returns boolean value if (str1.equalsIgnoreCase(str2)){ … } • The case-sensitive equals() method if (str1.equals(str2)){ … }
COMPARING STRINGS (3) • Operators == and != does not check for equality! • These operators returns boolean value, but check if the addresses of the object are equal • Use equals() and equalsIgnoreCase() instead String str1 = new String("Hello"); String str2 = str1; System.out.println((str1==str2)); // true String str1 = "Hello"; String str2 = "Hello"; System.out.println((str1==str2)); // true!!! String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println((str1==str2)); // This is false!
COMPARING STRINGS – EXAMPLE • Finding the first in a lexicographical order string from a given list of strings String[] towns = {"Jamshoro", "hyderabad", "Qasimabad","Latifabad", "Kotri", "Heerabad"}; String firstTown = towns[0]; for (int i=1; i<towns.length; i++) { String currentTown = towns[i]; if (currentTown.compareTo(firstTown) < 0) { firstTown = currentTown; } } System.out.println("First town: " + firstTown);
COMPARING STRINGS Live Demo
CONCATENATING STRINGS • There are two ways to combine strings: • Using the concat() method String str = str1.concat(str2); • Using the + or the += operator String str = str1 + str2 + str3; String str += str1; • Any object can be appended to string String name = "Peter"; int age = 22; String s = name + " " + age; //  "Peter 22"
CONCATENATING STRINGS – EXAMPLE String firstName = "Shahjahan"; String lastName = "Samoon"; String fullName = firstName + " " + lastName; int age = 23; String nameAndAge = "Name: " + fullName + "nAge: " + age; System.out.println(nameAndAge); // Name: Shahjahan Samoon // Age: 23
CONCATENATING STRINGS Live Demo
SEARCHING STRINGS • Finding a character or substring within given string • First occurrence indexOf(String str) • First occurrence starting at given position indexOf(String str, int fromIndex) • Last occurrence lastIndexOf(String) • Last occurrence before given position lastIndexOf(String, int fromIndex)
SEARCHING STRINGS – EXAMPLE String str = "Java Programming Course"; int index = str.indexOf("Java"); // index = 0 index = str.indexOf("Course"); // index = 17 index = str.indexOf("COURSE"); // index = -1 // indexOf is case sensetive. -1 means not found index = str.indexOf("ram"); // index = 9 index = str.indexOf("r"); // index = 6 index = str.indexOf("r", 7); // index = 9 index = str.indexOf("r", 10); // index = 20 i = 0 1 2 3 4 5 6 7 8 9 10 11 12 … s.charAt(i) = J a v a P r o g r a m m …
SEARCHING STRINGS Live Demo
EXTRACTING SUBSTRINGS • Extracting substrings • str.substring(int beginIndex, int endIndex) • lastIndex is not included String filename = "C:PicsRila2005.jpg"; String name = filename.substring(8, 16); // name is Rila2005 • str.substring(int beginIndex) String filename = "C:PicsSummer2005.jpg"; String nameAndExtension = filename.substring(8); // nameAndExtension is Rila2005.jpg 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 C : P i c s R i l a 2 0 0 5 . j p g
EXTRACTING SUBSTRINGS Live Demo
SPLITTING STRINGS • To split a string by given separator(s) use the following method: String[] split(String regex) • String regex – String with special format • We can list the character which we want to use for separator in square brackets […] String[] parts = "Ivan; Petar,Gosho".split("[;,]"); // this wil separate the stirng into three parts // "Ivan", " Petar" and "Gosho"
SPLITTING STRINGS - EXAMPLE String listOfBeers = "Amstel, Zagorka, Tuborg, Becks."; String[] beers = listOfBeers.split("[ ,.]"); System.out.println("Available beers are:"); for (String beer : beers) { if (!"".equalsIgnoreCase(beer)) { System.out.println(beer); } }
SPLITTING STRINGS Live Demo
OTHER STRING OPERATIONS Replacing Substrings, Changing Character Casing, Trimming
REPLACING SUBSTRINGS • replace(String, String) – replaces all occurrences of given string with another • The result is new string (strings are immutable) String cocktail = "Vodka + Martini + Cherry"; String replaced = cocktail.replace("+", "and"); // Vodka and Martini and Cherry
CHANGING CHARACTER CASING • Using method toLowerCase() String alpha = "aBcDeFg"; String lowerAlpha = alpha.toLowerCase(); // abcdefg System.out.println(lowerAlpha); • Using method toUpperCase() String alpha = "aBcDeFg"; String upperAlpha = alpha.toUpperCase(); // ABCDEFG System.out.println(upperAlpha);
TRIMMING WHITE SPACE • Using method trim() String s = " example of white space "; String clean = s.trim(); System.out.println(clean);
OTHER STRING OPERATIONS Live Demo
BUILDING AND MODIFYING STRINGS Using StringBuilder Class
CONSTRUCTING STRINGS • Strings are immutable • concat(), replace(), trim(), ... return new string, do not modify the old one • Do not use "+" for strings in a loop! • It runs very inefficiently! public static string dupChar(char ch, int count){ String result = ""; for (int i=0; i<count; i++) result += ch; return result; } Bad practice. Avoid this!
CHANGING THE CONTENTS OF A STRING – STRINGBUILDER • Use the java.lang.StringBuilder class for modifiable strings of characters: • Use StringBuilder if you need to keep adding characters to a string public static String reverseIt(String s) { StringBuilder sb = new StringBuilder(); for (int i = s.length()-1; i >= 0; i--) sb.append(s.charAt(i)); return sb.ToString(); }
THE STRINGBUILDER CLASS Capacity StringBuilder: H e l l o , J a v a ! length() = 11 capacity() = 15 used buffer unused (length()) buffer • StringBuilder keeps a buffer memory, allocated in advance • Most operations use the buffer memory and do not allocate new objects
THE STRINGBUILDER CLASS (2) • StringBuilder(int capacity) constructor allocates in advance buffer memory of a given size • By default 16 characters are allocated • capacity() holds the currently allocated space (in characters) • charAt(int index) gives access to the char value at given position • length() hold the length of the string in the buffer
THE STRINGBUILDER CLASS (3) • append(…) appends string or other object after the last character in the buffer • delete(int start, int end) removes the characters in given range • insert(int offset, String str) inserts given string (or object) at given position • replace(int start, int end, String str) replaces all occurrences of a substring with given string • toString() converts the StringBuilder to String object
STRINGBUILDER – EXAMPLE • Extracting all capital letters from a string public static String extractCapitals(String s) { StringBuilder result = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (Character.isUpperCase(ch)) { result.append(ch); } } return result.toString(); }
HOW THE + OPERATOR DOES STRING CONCATENATIONS? • Consider following string concatenation: String result = str1 + str2; • It is equivalent to this code: StringBuffer sb = new StringBuffer(); sb.append(str1); sb.append(str2); String result = sb.toString(); • Actually several new objects are created and leaved to the garbage collector • What happens when using + in a loop?
USING STRINGBUILDER Live Demo
FORMATTING STRINGS Using toString() and String.format()
METHOD TOSTRING() • All classes have this public virtual method • Returns a human-readable, culture-sensitive string representing the object • Most Java Platform types have own implementation of toString()
METHOD STRING.FORMAT() • Applies templates for formatting strings • Placeholders are used for dynamic text • Like System.out.printf(…) String template = "If I were %s, I would %s."; String sentence1 = String.format( template, "developer", "know Java"); System.out.println(sentence1); // If I were developer, I would know Java. String sentence2 = String.format( template, "elephant", "weigh 4500 kg"); System.out.println(sentence2); // If I were elephant, I would weigh 4500 kg.
FORMATTING DATES • When we print Dates we use prefix t or T • d, e – day (with/without leading zero) • m – month • y, Y – year (2 or 4 digits) • H, M, S – hour, minute, second Date now = (new GregorianCalendar()).getTime(); System.out.printf("Now is " + "%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS", now); // Now is 23.05.2006 21:09:32
FORMATTING STRINGS Live Demo
EXERCISES  Write a program that reads a string, reverses it and prints it on the console. Example: "sample"  "elpmas".  Write a program to check if in a given expression the brackets are put correctly. Example of correct expression: ((a+b)/5-d). Example of incorrect expression: )(a+b)).
 Write a program that finds how many times a substring is contained in a given text (perform case insensitive search). Example: The target substring is "in". The text is as follows: We are living in a yellow submarine. We don't have anything else. Inside the submarine is very tight. So we are drinking all the day. We will move out of it in 5 days. The result is: 9.
 You are given a text. Write a program that changes the text in all regions identified by the tags <upcase> and </upcase> to uppercase. The tags cannot be nested. Example: We are living in a <upcase>yellow submarine</upcase>. We don't have <upcase>anything</upcase> else. The expected result: We are living in a YELLOW SUBMARINE. We don't have ANYTHING else.
 Write a program that parses an URL address given in the format: [protocol]://[server]/[resource] and extracts from it the [protocol], [server] and [resource] elements. For example from the URL http://www.devbg.org/forum/index.php following information should be extracted: [protocol] = "http", [server] = "www.devbg.org", [resource] = "/forum/index.php "
 Write a program that extracts from a given text all the sentences that contain given word. Example: The word is "in". The text is: We are living in a yellow submarine. We don't have anything else. Inside the submarine is very tight. So we are drinking all the day. We will move out of it in 5 days. The expected result is: We are living in a yellow submarine. We will move out of it in 5 days. Consider that the sentences are separated by "." and the words – by non-letter symbols.
 We are given a string containing a list of forbidden words and a text containing some of these words. Write a program that replaces the forbidden words with asterisks. Example: Microsoft announced its next generation Java compiler today. It uses advanced parser and special optimizer for the Microsoft JVM. Words: "Java, JVM, Microsoft" The expected result: ********* announced its next generation **** compiler today. It uses advanced parser and special optimizer for the ********* ***.
 Write a program that reads a string from the console and lists all the different letters in the string along with information how many times each letter is found.  Write a program that reads a string from the console and lists all the different words in the string with information how many times each word is found.  Write a program that reads a string from the console and replaces all series of consecutive identical letters with a single one. Example: "aaaaabbbbbcdddeeeedssaa" -> "abcdedsa".
 Write a program that reads a list of words, separated by spaces (' ') , and prints the list in an alphabetical order.  Write a program that lets the user input a string of maximum 20 characters. If the length of the string is less, the rest of the characters should be filled with '*'. Print the string into the console.

String and string manipulation x

  • 2.
    STRINGS AND STRINGSMANIPULATION
  • 3.
    CONTENTS 1. What Is String? 2. Creating and Using Strings • Declaring, Creating, Reading and Printing 3. Manipulating Strings • Comparing, Concatenating, Searching, Extracting Substrings, Splitting 4. Other String Operations • Replacing Substrings, Deleting Substrings, Changing Character Casing, Trimming
  • 4.
    CONTENTS 5. Building and Modifying Strings • Using StringBuilder Class 6. Formatting Strings
  • 5.
  • 6.
    FREQUENTLY ASKED QUESTIONSFAQ • What is string ? • Why string is final? • What are the ways to declare and initialize the String Object? • What is the difference b/w Reference values and literal strings? • What is the difference b/w + opretor and concat() method? • What is the effect when comparing strings with == and equals() ? • What is Difference b/w String class and String Buffer? • What is String pool in Java? • What does intern() method do in Java? • Why String is thread-safe in Java? • What is the difference b/w System.out.println(1+2+” text”) and System.out.println(” text”+1+2) ?
  • 7.
    WHAT IS STRING? • String is: • A sequence of characters • Each character is a Unicode character • Represented by the String (java.lang.String) data type in Java • Example: String s = "Hello, Java"; s H e l l o , J a v a
  • 8.
    JAVA.LANG.STRING • We use java.lang.String to work with strings in Java • String objects contain an immutable (read-only) sequence of characters • Use Unicode in order to support multiple languages and alphabets • Stores strings in the dynamic memory (managed heap) • java.lang.String is class • It is reference type
  • 9.
    JAVA.LANG.STRING • String objects are like arrays of characters (char[]) • Have fixed length (String.length()) • Elements can be accessed by index • Using charAt() method • The index is in the range 0...length()-1 String s = "Hello!"; int len = s.length(); // len = 6 char ch = s.charAt(1); // ch = 'e„` index = 0 1 2 3 4 5 s.charAt(index) = H e l l o !
  • 10.
    STRINGS – FIRSTEXAMPLE String s = “Hidaya Institute of Science & Tchnology."; System.out.printf("s = "%s"%n", s); System.out.printf("s.length() = %d%n", s.length()); for (int i = 0; i < s.length(); i++) { System.out.printf("s[%d] = %c%n", i, s.charAt(i)); }
  • 11.
    STRINGS – FIRSTEXAMPLE Live Demo
  • 12.
    Creating and UsingStrings Declaring, Creating, Reading and Printing
  • 13.
    DECLARING STRINGS • We use Java String class for declaring string variables: String str;
  • 14.
    CREATING STRINGS • Before initializing a string variable is equal to null • Strings can be initialized by: • Assigning a string literal to the string variable • Assigning the value of another string variable • Assigning the result of operation of type string
  • 15.
    CREATING STRINGS (2) • Not initialized variables has value of null String s; // s is equal to null • Assigning a string literal String s = "I am string literal!"; • Assigning another string variable String s2 = s; • Assigning the result of string operation String s = "I'm " + 42 + " years old.";
  • 16.
    READING AND PRINTINGSTRINGS • Reading strings from the console • Use the method input.nextLine() String s = input.nextLine(); • Printng Strings to the console • Use methods print() and println() System.out.print("Please enter your name: "); String name = input.nextLine(); System.out.printf("Hello, %s!%n", name);
  • 17.
    MANIPULATING STRINGS Comparing, Concatenating,Searching, Extracting Substrings, Splitting
  • 18.
    COMPARING STRINGS • There are a number of ways to compare two strings: • Dictionary-based string comparison • Case-insensitive int result = str1.compareToIgnoreCase(str2); // result == 0 if str1 equals str2 // result < 0 if str1 if before str2 // result > 0 if str1 if after str2 • Case-sensitive str1.compareTo(str2);
  • 19.
    COMPARING STRINGS (2) • Equality checking by equalsIgnoreCase() • Performs case-insensitive compare • Returns boolean value if (str1.equalsIgnoreCase(str2)){ … } • The case-sensitive equals() method if (str1.equals(str2)){ … }
  • 20.
    COMPARING STRINGS (3) • Operators == and != does not check for equality! • These operators returns boolean value, but check if the addresses of the object are equal • Use equals() and equalsIgnoreCase() instead String str1 = new String("Hello"); String str2 = str1; System.out.println((str1==str2)); // true String str1 = "Hello"; String str2 = "Hello"; System.out.println((str1==str2)); // true!!! String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println((str1==str2)); // This is false!
  • 21.
    COMPARING STRINGS –EXAMPLE • Finding the first in a lexicographical order string from a given list of strings String[] towns = {"Jamshoro", "hyderabad", "Qasimabad","Latifabad", "Kotri", "Heerabad"}; String firstTown = towns[0]; for (int i=1; i<towns.length; i++) { String currentTown = towns[i]; if (currentTown.compareTo(firstTown) < 0) { firstTown = currentTown; } } System.out.println("First town: " + firstTown);
  • 22.
  • 23.
    CONCATENATING STRINGS • There are two ways to combine strings: • Using the concat() method String str = str1.concat(str2); • Using the + or the += operator String str = str1 + str2 + str3; String str += str1; • Any object can be appended to string String name = "Peter"; int age = 22; String s = name + " " + age; //  "Peter 22"
  • 24.
    CONCATENATING STRINGS –EXAMPLE String firstName = "Shahjahan"; String lastName = "Samoon"; String fullName = firstName + " " + lastName; int age = 23; String nameAndAge = "Name: " + fullName + "nAge: " + age; System.out.println(nameAndAge); // Name: Shahjahan Samoon // Age: 23
  • 25.
  • 26.
    SEARCHING STRINGS • Finding a character or substring within given string • First occurrence indexOf(String str) • First occurrence starting at given position indexOf(String str, int fromIndex) • Last occurrence lastIndexOf(String) • Last occurrence before given position lastIndexOf(String, int fromIndex)
  • 27.
    SEARCHING STRINGS –EXAMPLE String str = "Java Programming Course"; int index = str.indexOf("Java"); // index = 0 index = str.indexOf("Course"); // index = 17 index = str.indexOf("COURSE"); // index = -1 // indexOf is case sensetive. -1 means not found index = str.indexOf("ram"); // index = 9 index = str.indexOf("r"); // index = 6 index = str.indexOf("r", 7); // index = 9 index = str.indexOf("r", 10); // index = 20 i = 0 1 2 3 4 5 6 7 8 9 10 11 12 … s.charAt(i) = J a v a P r o g r a m m …
  • 28.
  • 29.
    EXTRACTING SUBSTRINGS • Extracting substrings • str.substring(int beginIndex, int endIndex) • lastIndex is not included String filename = "C:PicsRila2005.jpg"; String name = filename.substring(8, 16); // name is Rila2005 • str.substring(int beginIndex) String filename = "C:PicsSummer2005.jpg"; String nameAndExtension = filename.substring(8); // nameAndExtension is Rila2005.jpg 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 C : P i c s R i l a 2 0 0 5 . j p g
  • 30.
  • 31.
    SPLITTING STRINGS • To split a string by given separator(s) use the following method: String[] split(String regex) • String regex – String with special format • We can list the character which we want to use for separator in square brackets […] String[] parts = "Ivan; Petar,Gosho".split("[;,]"); // this wil separate the stirng into three parts // "Ivan", " Petar" and "Gosho"
  • 32.
    SPLITTING STRINGS -EXAMPLE String listOfBeers = "Amstel, Zagorka, Tuborg, Becks."; String[] beers = listOfBeers.split("[ ,.]"); System.out.println("Available beers are:"); for (String beer : beers) { if (!"".equalsIgnoreCase(beer)) { System.out.println(beer); } }
  • 33.
  • 34.
    OTHER STRING OPERATIONS Replacing Substrings, Changing Character Casing, Trimming
  • 35.
    REPLACING SUBSTRINGS • replace(String, String) – replaces all occurrences of given string with another • The result is new string (strings are immutable) String cocktail = "Vodka + Martini + Cherry"; String replaced = cocktail.replace("+", "and"); // Vodka and Martini and Cherry
  • 36.
    CHANGING CHARACTER CASING • Using method toLowerCase() String alpha = "aBcDeFg"; String lowerAlpha = alpha.toLowerCase(); // abcdefg System.out.println(lowerAlpha); • Using method toUpperCase() String alpha = "aBcDeFg"; String upperAlpha = alpha.toUpperCase(); // ABCDEFG System.out.println(upperAlpha);
  • 37.
    TRIMMING WHITE SPACE • Using method trim() String s = " example of white space "; String clean = s.trim(); System.out.println(clean);
  • 38.
  • 39.
    BUILDING AND MODIFYING STRINGS Using StringBuilder Class
  • 40.
    CONSTRUCTING STRINGS • Strings are immutable • concat(), replace(), trim(), ... return new string, do not modify the old one • Do not use "+" for strings in a loop! • It runs very inefficiently! public static string dupChar(char ch, int count){ String result = ""; for (int i=0; i<count; i++) result += ch; return result; } Bad practice. Avoid this!
  • 41.
    CHANGING THE CONTENTSOF A STRING – STRINGBUILDER • Use the java.lang.StringBuilder class for modifiable strings of characters: • Use StringBuilder if you need to keep adding characters to a string public static String reverseIt(String s) { StringBuilder sb = new StringBuilder(); for (int i = s.length()-1; i >= 0; i--) sb.append(s.charAt(i)); return sb.ToString(); }
  • 42.
    THE STRINGBUILDER CLASS Capacity StringBuilder: H e l l o , J a v a ! length() = 11 capacity() = 15 used buffer unused (length()) buffer • StringBuilder keeps a buffer memory, allocated in advance • Most operations use the buffer memory and do not allocate new objects
  • 43.
    THE STRINGBUILDER CLASS(2) • StringBuilder(int capacity) constructor allocates in advance buffer memory of a given size • By default 16 characters are allocated • capacity() holds the currently allocated space (in characters) • charAt(int index) gives access to the char value at given position • length() hold the length of the string in the buffer
  • 44.
    THE STRINGBUILDER CLASS(3) • append(…) appends string or other object after the last character in the buffer • delete(int start, int end) removes the characters in given range • insert(int offset, String str) inserts given string (or object) at given position • replace(int start, int end, String str) replaces all occurrences of a substring with given string • toString() converts the StringBuilder to String object
  • 45.
    STRINGBUILDER – EXAMPLE • Extracting all capital letters from a string public static String extractCapitals(String s) { StringBuilder result = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (Character.isUpperCase(ch)) { result.append(ch); } } return result.toString(); }
  • 46.
    HOW THE +OPERATOR DOES STRING CONCATENATIONS? • Consider following string concatenation: String result = str1 + str2; • It is equivalent to this code: StringBuffer sb = new StringBuffer(); sb.append(str1); sb.append(str2); String result = sb.toString(); • Actually several new objects are created and leaved to the garbage collector • What happens when using + in a loop?
  • 47.
  • 48.
  • 49.
    METHOD TOSTRING() • All classes have this public virtual method • Returns a human-readable, culture-sensitive string representing the object • Most Java Platform types have own implementation of toString()
  • 50.
    METHOD STRING.FORMAT() • Applies templates for formatting strings • Placeholders are used for dynamic text • Like System.out.printf(…) String template = "If I were %s, I would %s."; String sentence1 = String.format( template, "developer", "know Java"); System.out.println(sentence1); // If I were developer, I would know Java. String sentence2 = String.format( template, "elephant", "weigh 4500 kg"); System.out.println(sentence2); // If I were elephant, I would weigh 4500 kg.
  • 51.
    FORMATTING DATES • When we print Dates we use prefix t or T • d, e – day (with/without leading zero) • m – month • y, Y – year (2 or 4 digits) • H, M, S – hour, minute, second Date now = (new GregorianCalendar()).getTime(); System.out.printf("Now is " + "%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS", now); // Now is 23.05.2006 21:09:32
  • 52.
  • 53.
    EXERCISES  Write aprogram that reads a string, reverses it and prints it on the console. Example: "sample"  "elpmas".  Write a program to check if in a given expression the brackets are put correctly. Example of correct expression: ((a+b)/5-d). Example of incorrect expression: )(a+b)).
  • 54.
     Write aprogram that finds how many times a substring is contained in a given text (perform case insensitive search). Example: The target substring is "in". The text is as follows: We are living in a yellow submarine. We don't have anything else. Inside the submarine is very tight. So we are drinking all the day. We will move out of it in 5 days. The result is: 9.
  • 55.
     You aregiven a text. Write a program that changes the text in all regions identified by the tags <upcase> and </upcase> to uppercase. The tags cannot be nested. Example: We are living in a <upcase>yellow submarine</upcase>. We don't have <upcase>anything</upcase> else. The expected result: We are living in a YELLOW SUBMARINE. We don't have ANYTHING else.
  • 56.
     Write aprogram that parses an URL address given in the format: [protocol]://[server]/[resource] and extracts from it the [protocol], [server] and [resource] elements. For example from the URL http://www.devbg.org/forum/index.php following information should be extracted: [protocol] = "http", [server] = "www.devbg.org", [resource] = "/forum/index.php "
  • 57.
     Write aprogram that extracts from a given text all the sentences that contain given word. Example: The word is "in". The text is: We are living in a yellow submarine. We don't have anything else. Inside the submarine is very tight. So we are drinking all the day. We will move out of it in 5 days. The expected result is: We are living in a yellow submarine. We will move out of it in 5 days. Consider that the sentences are separated by "." and the words – by non-letter symbols.
  • 58.
     We aregiven a string containing a list of forbidden words and a text containing some of these words. Write a program that replaces the forbidden words with asterisks. Example: Microsoft announced its next generation Java compiler today. It uses advanced parser and special optimizer for the Microsoft JVM. Words: "Java, JVM, Microsoft" The expected result: ********* announced its next generation **** compiler today. It uses advanced parser and special optimizer for the ********* ***.
  • 59.
     Write aprogram that reads a string from the console and lists all the different letters in the string along with information how many times each letter is found.  Write a program that reads a string from the console and lists all the different words in the string with information how many times each word is found.  Write a program that reads a string from the console and replaces all series of consecutive identical letters with a single one. Example: "aaaaabbbbbcdddeeeedssaa" -> "abcdedsa".
  • 60.
     Write aprogram that reads a list of words, separated by spaces (' ') , and prints the list in an alphabetical order.  Write a program that lets the user input a string of maximum 20 characters. If the length of the string is less, the rest of the characters should be filled with '*'. Print the string into the console.