11- string and string builder java

33
STRING AND STRING MANIPULATION Contents: 1.What Is String? 2.Creating and Using Strings Declaring, Initializing, Reading and Printing 3.Manipulating Strings Comparing, Concatenating, Searching, Extracting Substrings, Splitting 4.Other String Operations Replacing Substrings, Deleting Substrings, Changing Character Casing, Trimming 5.Building and Modifying Strings Using StringBuilder Class 6.Formatting Strings

Upload: raja-kumar

Post on 06-May-2015

336 views

Category:

Education


10 download

TRANSCRIPT

Page 1: 11- String and string builder JAVA

STRING AND STRING MANIPULATIONContents:1.What Is String?

2.Creating and Using Strings

Declaring, Initializing, Reading and Printing

3.Manipulating Strings

Comparing, Concatenating, Searching, Extracting Substrings, Splitting

4.Other String Operations

Replacing Substrings, Deleting Substrings, Changing Character Casing, Trimming

5.Building and Modifying Strings

Using StringBuilder Class

6.Formatting Strings

Page 2: 11- String and string builder JAVA

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";

H e l l o , J a v as

Page 3: 11- String and string builder JAVA

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

Page 4: 11- String and string builder JAVA

java.lang.String

String objects are like arrays of characters (char[]) Have fixed length “string”.length()=6…

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 = 6char ch = s.charAt(1); // ch = 'e‘`

0 1 2 3 4 5

H e l l o !

index =index =index =index =

s.charAt(index) =s.charAt(index) =s.charAt(index) =s.charAt(index) =

Page 5: 11- String and string builder JAVA

java.lang.String

Example:String s = "Hidaya Institute of Science & Tchnology.";

System.out.println("s= "+s);System.out.println("Length= "+s.length());

for (int i = 0; i < s.length(); i++) { System.out.println("s["+i+"] = "+ s.charAt(i));}

Page 6: 11- String and string builder JAVA

DECLARING, INITIALIZING

Declaring

We use Java String class for declaring string variables:

Not initialized variables has value of nullnull

Initializing

Assigning a string literal

Assigning another string variable

Assigning the result of string operation

String str;

String s = "I am string literal!";

String s2 = s;

String s = "I'm " + 42 + " years old.";

Page 7: 11- String and string builder JAVA

STRING OBJECTS ARE IMMUTABLE

String s1 = "Java"; //Statement 1String s2 = s1; //Statement 2s2 = s1.concat("Is"); //Statement 3s2 = s2 + "Fun"; //Statement 4System.out.println("s1 = " + s1);System.out.println("s2 = " + s2);

How many String objects and reference variables are created?

Two Reference Variables s1

s2

Five String Objects/literals “Java”

“Is”

“JavaIs”

“Fun”

“JavaIsFun”

String Object

Java

s1

s2

String s1=“Java”;String s1=“Java”;String s1=“Java”;String s1=“Java”;

String String reference reference variable s1variable s1

String String reference reference variable s1variable s1

String String reference reference variable s2variable s2

String String reference reference variable s2variable s2

Statement 1 creates one reference variable s1, one string object “Java”Statement 2 creates one reference variable s2

String s2=s1;String s2=s1;String s2=s1;String s2=s1;

Page 8: 11- String and string builder JAVA

STRING OBJECTS ARE IMMUTABLE

Java

s1

s2

Statement 3:Statement 3: s2=s1.concat(“Is”); s2=s1.concat(“Is”);Statement 3:Statement 3: s2=s1.concat(“Is”); s2=s1.concat(“Is”);

String String reference reference variable s1variable s1

String String reference reference variable s1variable s1

String String reference reference variable s2variable s2

String String reference reference variable s2variable s2

String ObjectString ObjectString ObjectString Object

JavaIs

String ObjectString ObjectString ObjectString Object

Is

String ObjectString ObjectString ObjectString Object

Statement 3 creates, Two String Objects, “Java” and “JavaIs” and makes s2 refer to newly created object “JavaIs”

Page 9: 11- String and string builder JAVA

STRING OBJECTS ARE IMMUTABLE

Javas1

s2

Statement 3:Statement 3: s2=s2+”Fun”; s2=s2+”Fun”; Statement 3:Statement 3: s2=s2+”Fun”; s2=s2+”Fun”;

String String reference reference variable s1variable s1

String String reference reference variable s1variable s1

String String reference reference variable s2variable s2

String String reference reference variable s2variable s2

String ObjectString ObjectString ObjectString Object

JavaIsFun

String ObjectString ObjectString ObjectString Object

Is

String ObjectString ObjectString ObjectString Object

Statement 4 creates, Two String Objects, “Fun” and “JavaIsFun” and makes s2 refer to newly created object “JavaIsFun”

JavaIs

String ObjectString ObjectString ObjectString Object

Fun

String ObjectString ObjectString ObjectString Object

Page 10: 11- String and string builder JAVA

READING AND PRINTING STRINGS Reading strings from the console

java.util.Scanner input=new java.util.Scanner(System.in);

Use the method input.nextLine()

Printng Strings to the console

Use methods print() and println()

String s = input.nextLine();

System.out.print("Please enter your name: "); String name = input.nextLine();System.out.println(name);

Page 11: 11- String and string builder JAVA

MANIPULATING STRINGS

Comparing Strings:

There are a number of ways to compare two strings: Dictionary-based string comparison

Case-insensitive

Case-sensitive

Comparing, Concatenating, Searching, Extracting Substrings, Splitting

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

str1.compareTo(str2);

Page 12: 11- String and string builder JAVA

COMPARING STRINGS (2)

Equality checking by equalsIgnoreCase()

Performs case-insensitive compare

Returns boolean value

The case-sensitive equals() method

if (str1.equalsIgnoreCase(str2)){ …}

if (str1.equals(str2)){ …}

Page 13: 11- String and string builder JAVA

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);

Page 14: 11- String and string builder JAVA

java.lang.STRING 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!

Page 15: 11- String and string builder JAVA

CONCATENATING STRINGS There are two ways to combine strings:

Using the concat() method

Using the + or the += operator

Any object can be appended to string

String str = str1.concat(str2);

String str = str1 + str2 + str3;String str += str1;

String name = “Asad";int age = 23;String s = name +" "+ age;// “Asad 23"

Page 16: 11- String and string builder JAVA

CONCATENATING STRINGS – EXAMPLE

String firstName = “Asad";String lastName = “Khan";

String fullName = firstName + " " + lastName;

int age = 23;

String nameAndAge = "Name: " + fullName + "\nAge: " + age;

System.out.println(nameAndAge);// Name: Asad Khan// Age: 23

Page 17: 11- String and string builder JAVA

SEARCHING STRINGS

Finding a character or substring within given string First occurrence

First occurrence starting at given position

Last occurrence

Last occurrence before given position

indexOf(String str)

indexOf(String str, int fromIndex)

lastIndexOf(String)

lastIndexOf(String, int fromIndex)

Page 18: 11- String and string builder JAVA

SEARCHING STRINGS – EXAMPLE

String str = "Java Programming Course";

int index = str.indexOf("Java"); // index = 0index = str.indexOf("Course"); // index = 17index = str.indexOf("COURSE"); // index = -1// indexOf is case sensetive. -1 means not foundindex = str.indexOf("ram"); // index = 9index = str.indexOf("r"); // index = 6index = str.indexOf("r", 7); // index = 9index = str.indexOf("r", 10); // index = 20

00 11 22 33 44 55 66 77 88 99 1010 1111 1212 ……

JJ aa vv aa PP rr oo gg rr aa mm mm ……

i =i =

s.charAt(i) =) =s.charAt(i) =) =

Page 19: 11- String and string builder JAVA

EXTRACTING SUBSTRINGS

Extracting substrings

str.substring(int beginIndex, int endIndex)

lastIndex is not included

str.substring(int beginIndex)

String filename = "C:\\Pics\\Rila2005.jpg";String name = filename.substring(8, 16);// name is Rila2005

String filename = "C:\\Pics\\Raila2005.jpg";String nameAndExtension = filename.substring(8);// nameAndExtension is Rila2005.jpg

00 11 22 33 44 55 66 77 88 99 1010 1111 1212 1313 1414 1515 1616 1717 1818 1919

CC :: \\ \\ PP ii cc ss \\\\ RR ii ll aa 22 00 00 55 .. jj pp gg

Page 20: 11- String and string builder JAVA

SPLITTING STRINGS To split a string by given separator(s) use the following

method:

String regex – String with special format

We can list the character which we want to use for separator in square brackets […]

String[] split(String regex)

String[] parts = "Ivan; Petar,Gosho".split("[;,]");// this wil separate the stirng into three parts// "Ivan", " Petar" and "Gosho"

Page 21: 11- String and string builder JAVA

SPLITTING STRINGS - EXAMPLE

String ListOfCourses = "Java, ASP, PHP, Linux.";String[] Courses = ListOfCourses.split("[ ,.]");System.out.println("Available Courses are:");for (String Course : Courses)

System.out.println(Course);

Page 22: 11- String and string builder JAVA

OTHER STRING OPERATIONS

Replacing Substrings, Changing Character Casing, Trimming

Page 23: 11- String and string builder JAVA

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(); // abcdefgSystem.out.println(lowerAlpha);

Page 24: 11- String and string builder JAVA

TRIMMING WHITE SPACE

Using method trim()

String s = " example of white space ";String clean = s.trim();System.out.println(clean);

String alpha = "aBcDeFg";String upperAlpha = alpha.toUpperCase(); // ABCDEFGSystem.out.println(upperAlpha);

Using method toUpperCase()

Page 25: 11- String and string builder JAVA

BUILDING AND MODIFYING STRINGS

Using StringBuilder Class

Page 26: 11- String and string builder JAVA

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!

Page 27: 11- String and string builder JAVA

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();}

Page 28: 11- String and string builder JAVA

THE STRINGBUILDER CLASS

StringBuilder keeps a buffer memory, allocated in advance Most operations use the buffer memory and do not allocate new

objects

H e l l o , J a v a !StringBuilder:

length() = 11capacity() = 15

StringBuilder:

length() = 11capacity() = 15 used buffer

(length())used buffer(length())

unusedbufferunusedbuffer

CapacityCapacity

Page 29: 11- String and string builder JAVA

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

Page 30: 11- String and string builder JAVA

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

Page 31: 11- String and string builder JAVA

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();}

Page 32: 11- String and string builder JAVA

HOW THE + OPERATOR DOES STRING CONCATENATIONS? Consider following string concatenation:

It is equivalent to this code:

Actually several new objects are created and leaved to the garbage collector

What happens when using + in a loop?

String result = str1 + str2;

StringBuffer sb = new StringBuffer();sb.append(str1);sb.append(str2);String result = sb.toString();

Page 33: 11- String and string builder JAVA

METHOD toString()

All classes have this public virtual method derived from Object class

Returns a human-readable, culture-sensitive string representing the object

Most Java Platform types have own implementation of toString()

FORMATTING STRINGS

Using toString()