1 CSC 221: Computer Programming I Fall 2004 String manipulation  Java Strings: declaration, assignment, printing, concatenation  String traversal, construction,

Slides:



Advertisements
Similar presentations
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 9 Strings.
Advertisements

Chapter 7 Strings F To process strings using the String class, the StringBuffer class, and the StringTokenizer class. F To use the String class to process.
1 Strings and Text I/O. 2 Motivations Often you encounter the problems that involve string processing and file input and output. Suppose you need to write.
Java Programming Strings Chapter 7.
Strings An extension of types A class that encompasses a character array and provides many useful behaviors Chapter 9 Strings are IMMUTABLE.
©2004 Brooks/Cole Chapter 7 Strings and Characters.
1 A Balanced Introduction to Computer Science, 2/E David Reed, Creighton University ©2008 Pearson Prentice Hall ISBN Chapter 17 JavaScript.
Programming 2 CS112- Lab 2 Java
Lab session 3 and 4 Topics to be covered Escape sequences Escape sequences Variables /identifiers Variables /identifiers Constants Constants assignment.
28-Jun-15 String and StringBuilder Part I: String.
COMP 110 Introduction to Programming Mr. Joshua Stough September 10, 2007.
1 Strings and String Operations  What is a Strings?  Internal Representation of Strings  Getting Substrings from a String  Concatenating Strings 
Sanjay Goel, School of Business, University at Albany, SUNY 1 MSI 692: Special Topics in Information Technology Lecture 4: Strings & Arrays Sanjay Goel.
1 CSC 221: Computer Programming I Fall 2005 Repetition and Text Processing  Java Strings: declaration, assignment, printing, concatenation  String traversal,
1 CSC 221: Introduction to Programming Fall 2011 Text processing  Python strings  indexing & slicing, len function  functions vs. methods  string methods:
1 CSC 222: Object-Oriented Programming Spring 2012 Simulations & library classes  HW3: RouletteWheel, RouletteGame, RouletteTester  javadoc  java.lang.
Recursion A method is recursive if it makes a call to itself. A method is recursive if it makes a call to itself. For example: For example: public void.
1 CSC 221: Computer Programming I Spring 2010 interaction & design  modular design: roulette game  constants, static fields  % operator, string equals.
1 CSC 221: Introduction to Programming Fall 2012 Text processing  Python strings  indexing & slicing, len function  functions vs. methods  string methods:
The while Loop Syntax while (condition) { statements } As long condition is true, the statements in the while loop execute.
EXAM 1 REVIEW. days until the AP Computer Science test.
A Balanced Introduction to Computer Science, 3/E David Reed, Creighton University ©2011 Pearson Prentice Hall ISBN Chapter 15 JavaScript.
String Manipulation. Java String class  The String class represents character strings “Tammy Bailey”  All strings (arrays of characters) in Java programs.
1 CSC 221: Computer Programming I Spring 2008 Class design & strings  design principles  cohesion & coupling  class example: graphical DotRace  static.
Chapter 7: Characters, Strings, and the StringBuilder.
1 CSC 221: Computer Programming I Spring 2010 Design & text processing  design principles  cohesion & coupling  objects vs. primitives  String methods:
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 8: User-Defined Simple Data Types, Namespaces, and the string Type.
1 Textual Data Many computer applications manipulate textual data word processors web browsers online dictionaries.
Chapter 3: Classes and Objects Java Programming FROM THE BEGINNING Copyright © 2000 W. W. Norton & Company. All rights reserved Java’s String Class.
1 CSC 221: Introduction to Programming Fall 2011 Lists  lists as sequences  list operations +, *, len, indexing, slicing, for-in, in  example: dice.
Vladimir Misic: Characters and Strings1Tuesday, 9:39 AM Characters and Strings.
String Processing Word processing term papers, writing memoirs, sending messages, responding to surveys, placing online orders and registering products.
Strings Mr. Smith AP Computer Science A. What are Strings? Name some of the characteristics of strings: A string is a sequence of characters, such as.
CSC Programming I Lecture 9 September 11, 2002.
1 CSC 221: Computer Programming I Fall 2009 Class design & strings  design principles  cohesion & coupling  example: graphical DotRace  objects vs.
Chapter 3A Strings. Using Predefined Classes & Methods in a Program To use a method you must know: 1.Name of class containing method (Math) 2.Name of.
1 CSC 221: Computer Programming I Fall 2005 Class design & strings  design principles  cohesion & coupling  class examples: Hurricane, TaxReturn  objects.
1 CSC 221: Introduction to Programming Fall 2012 Lists  lists as sequences  list operations +, *, len, indexing, slicing, for-in, in  example: dice.
Java String 1. String String is basically an object that represents sequence of char values. An array of characters works same as java string. For example:
1 CSC 221: Computer Programming I Fall 2005 simple conditionals and expressions  if statements, if-else  increment/decrement, arithmetic assignments.
1 Predefined Classes and Objects Chapter 3. 2 Objectives You will be able to:  Use predefined classes available in the Java System Library in your own.
17-Feb-16 String and StringBuilder Part I: String.
Strings and I/O. Lotsa String Stuff… There are close to 50 methods defined in the String class. We will introduce several of them here: charAt, substring,
Chapter 8: Loops, Arrays, Strings Loop statements –do –while –for Arrays –declaration, allocation, initialization, access –multi-dimensional –heterogeneous.
CSC 221: Computer Programming I Fall 2001  C++ libraries  cmath, cctype  classes and objects  abstract data types, classes and objects  data fields,
String and Lists Dr. José M. Reyes Álamo. 2 Outline What is a string String operations Traversing strings String slices What is a list Traversing a list.
1 A Balanced Introduction to Computer Science, 2/E David Reed, Creighton University ©2008 Pearson Prentice Hall ISBN Chapter 15 JavaScript.
The Methods and What You Need to Know for the AP Exam
Introduction to programming in java
String and Lists Dr. José M. Reyes Álamo.
CSC 222: Object-Oriented Programming Fall 2017
CSC 222: Object-Oriented Programming Spring 2013
CSC 222: Object-Oriented Programming Spring 2015
CSC 222: Object-Oriented Programming Fall 2017
Primitive Types Vs. Reference Types, Strings, Enumerations
String Objects & its Methods
Modern Programming Tools And Techniques-I Lecture 11: String Handling
String and StringBuilder
CS 106A, Lecture 9 Problem-Solving with Strings
Chapter 7: Strings and Characters
String and StringBuilder
String and StringBuilder
CSC 221: Introduction to Programming Fall 2018
String and Lists Dr. José M. Reyes Álamo.
CSC 222: Object-Oriented Programming Spring 2012
String and StringBuilder
String Processing 1 MIS 3406 Department of MIS Fox School of Business
Introduction to Computer Science
String methods 26-Apr-19.
Python Strings.
Presentation transcript:

1 CSC 221: Computer Programming I Fall 2004 String manipulation  Java Strings: declaration, assignment, printing, concatenation  String traversal, construction, Character.toLowerCase  String methods: length, charAt, indexOf, substring  applications: Pig Latin translator  Strings vs. primitives: equals, compareTo  unit testing

2 Java strings recall: String is a Java class that is automatically defined for you  a String object encapsulates a sequence of characters  you can declare a String variable and assign it a value just like any other type String firstName = "Dave";  you can display Strings using System.out.print and System.out.println System.out.println(firstName);  the '+' operator concatenates two strings (or string and number) together String str = "foo" + "lish"; str = str + "ly"; int age = 19; System.out.println("Next year, you will be " + (age+1));

3 String methods in addition, there are many useful methods defined for Strings int length() returns the length of the String str char charAt(int index) returns the character at specified index first index is 0 last index is str.length()-1 if index = str.length(), an error occurs String str = "foobar"; for (int i = 0; i < str.length(); i++) { System.out.print(str.charAt(i)); } String str = "foobar"; for (int i = str.length()-1; i >= 0; i--) { System.out.print(str.charAt(i)); } String str = "foobar"; System.out.println( str.length() ); System.out.println( str.charAt(0) ); System.out.println( str.charAt(1) ); System.out.println( str.charAt(str.length()-1) );

4 Traversing & constructing Strings since the length of a String can be determined using the length method, a for loop can be used to traverse the String  as you access individual characters, can test and act upon values  can even construct a new string out of individual characters String str = "zaboomofoo"; int count = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == 'o') { count++; } String copy = ""; for (int i = 0; i < str.length(); i++) { copy = str.charAt(i) + copy; } String copy = ""; for (int i = 0; i < str.length(); i++) { copy = copy + str.charAt(i); }

5 String utilities we can define and encapsulate additional string operations in a class  StringUtils will not have any fields, it simply encapsulates methods  can define methods to be static – static methods can be called directly on the class public class StringUtils { /** * Reverses a string. str the string to be reversed a copy of str with the order of the characters reversed */ public static String reverse(String str) { String copy = ""; for (int i = 0; i < str.length(); i++) { copy = str.charAt(i) + copy; } return copy; }. }

6 Stripping a string consider the task of removing spaces from a string  need to traverse the string and check each char to see if it is a space  if it is not, add that char to the copy string  if it is a space? /** * Strips all spaces out of a string. str the string to be stripped a copy of str with each space removed */ public static String strip(String str) { String copy = ""; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) != ' ') { copy += str.charAt(i); } return copy; }

7 Censoring a string consider the task of censoring a word, i.e., replacing each vowel with ' * '  need to traverse the string and check each char to see if it is a vowel  if it is a vowel, add ' * ' to the copy string  if it is not, add the char to the copy string /** * Censors a string by replacing all vowels with asterisks. str the string to be censored a copy of str with each vowel replaced by an asterisk */ public static String censor(String str) { String copy = ""; for (int i = 0; i < str.length(); i++) { if (isVowel(str.charAt(i))) { copy += '*'; } else { copy += str.charAt(i); } return copy; } /** * Determines if a character is a vowel (either upper or lower case). ch the character to be tested true if ch is a vowel, else false */ private static boolean isVowel(char ch) { ????????? }

8 Testing for a vowel a brute force approach would be to test every vowel separately TEDIOUS! note that isVowel is a private method  it isn't really a general purpose String utility  it's purpose is to be used by censor – user doesn't need to know about it private static boolean isVowel(char ch) { if (ch == 'a') { return true; } else if (ch == 'A') { return true; } else if (ch == 'e') { return true; } else if (ch == 'E') { return true; }. else if (ch == 'u') { return true; } else if (ch == 'U') { return true; } else { return false; }

9 Testing for a vowel (cont.) we could simplify the code using the Character.toLowerCase method  toLowerCase is a static method of the Character class  it takes a character as input, and returns the lower case equivalent  if the input is not a letter, then it simply returns it unchanged private static boolean isVowel(char ch) { ch = Character.toLowerCase(ch); if (ch == 'a') { return true; } else if (ch == 'e') { return true; } else if (ch == 'i') { return true; } else if (ch == 'o') { return true; } else if (ch == 'u') { return true; } else { return false; }

10 Testing for a vowel (cont.) could simplify using || private boolean isVowel(char ch) { ch = Character.toLowerCase(ch); if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { return true; } else { return false; } private boolean isVowel(char ch) { ch = Character.toLowerCase(ch); return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'); } since the code returns the same value as the test, can avoid the if altogether boolean expressions involving || or && are evaluated intelligently via short-circuit evaluation expressions are evaluated left to right can stop evaluating || expression as soon as a part evaluates to true  entire expression is true can stop evaluating && expression as soon as a part evaluates to false  entire expression is false

11 Testing for a vowel (cont.) best solution involves the String method: int indexOf(char ch) int indexOf(String str) returns the index where ch/str first appears in the string (-1 if not found) for isVowel :  create a String that contains all the vowels  to test a character, call indexOf to find where it appears in the vowel String  if return value != -1, then it is a vowel private boolean isVowel(char ch) { String VOWELS = "aeiouAEIOU"; return (VOWELS.indexOf(ch) != -1); }

12 Substring the last String method we will consider is substring: String substring(int start, int end) returns the substring starting at index start and ending at index end-1 e.g., String str = "foobar"; str.substring(0,3)  "foo" str.substring(3, str.length())  "bar" /** * Capitalizes the first letter in the string. str the string to be capitalized a copy of str with the first letter capitalized */ public static String capitalize(String str) { return Character.toUpperCase(str.charAt(0)) + str.substring(1, str.length()); }

13 Pig Latin /** * Translates a string into Pig Latin str the string to be converted a copy of str translated into Pig Latin */ public static String pigLatin(String str) { return str.substring(1, str.length()) + str.charAt(0) + "ay"; } suppose we want to translate a word into Pig Latin  simplest version nix  ixnaypig  igpay latin  atinlaybanana  ananabay  to translate a word, move the last letter to the end and add "ay"

14 opsoay? using our method, oops  opsoayapple  ppleaay for "real" Pig Latin, you must consider the first letter of the word  if a consonant, then translate as before (move first letter to end then add "ay")  if a vowel, simply add "way" to the end oops  oopsway apple  appleway public static String pigLatin(String str) { if (isVowel(str.charAt(0))) { return str + "way"; } else { return str.substring(1, str.length()) + str.charAt(0) + "ay"; }

15 reightoncay? using our method, creighton  reightoncaythrill  hrilltay so, we need to be able to find the first occurrence of a vowel HOW? for "real" Pig Latin, if the word starts with a sequence of consonants, must move the entire sequence to the end then add "ay" creighton  eightoncray thrill  illthray

16 Handling multiple consonants /** * Finds the first occurrence of a vowel in a string. str the string to be searched the index where the first vowel in str occurs (-1 if no vowel) */ private static int findVowel(String str) { for (int i = 0; i < str.length(); i++) { if (isVowel(str.charAt(i))) { return i; } return -1; } public static String pigLatin(String str) { int firstVowel = findVowel(str); if (firstVowel <= 0) { return str + "way"; } else { return str.substring(firstVowel, str.length()) + str.substring(0,firstVowel) + "ay"; }

17 In-class exercise modify pigLatin so that it preserves capitalization computer  omputercay science  iencesay Creighton  Eightoncray Nebraska  Ebraskanay Omaha  Omahaway

18 Strings vs. primitives although they behave similarly to primitive types (int, double, char, boolean), Strings are different in nature  String is a class that is defined in a separate library: java.lang.String  a String value is really an object  recall the distinction: you can call methods on a String, e.g., str.length()  also, you can Inspect the String fields of an object

19 Comparing strings comparison operators ( >= ) are defined for primitives but not objects String str1 = "foo", str2 = "bar"; if (str1 < str2) … // ILLEGAL == and != are defined for objects, but don't do what you think if (str1 == str2) … // TESTS WHETHER THEY ARE THE // SAME OBJECT, NOT WHETHER THEY // HAVE THE SAME VALUE! Strings are comparable using the equals and compareTo methods if (str1.equals(str2)) … // true IF THEY REPRESENT THE // SAME STRING VALUE if (str1.compareTo(str2) < 0) … // RETURNS -1 if str1 < str2 // RETURNS 0 if str1 == str2 // RETURNS 1 if str1 > str2

20 Comparison example suppose we wanted to compare two names to see which comes first alphabetically  Kelly Jones < Kelly Miller < Chris Smith < Pat Smith public static void compareNames(String myFirst, String myLast, String yourFirst, String yourLast) { int lastCompare = myLast.compareTo(yourLast); int firstCompare = myFirst.compareTo(yourFirst); if (lastCompare < 0 || (lastCompare == 0 && firstCompare < 0)) { System.out.println("My name comes before yours alphabetically!"); } else if (lastCompare > 0 || (lastCompare == 0 && firstCompare > 0)) { System.out.println("Your name comes before mine alphabetically!"); } else { System.out.println("We have the same name!"); }

21 String method summary int length() returns number of chars in String char charAt(int index) returns the character at the specified index (indices range from 0 to str.length()-1) int indexOf(char ch) returns index where the specified char/substring int indexOf(String str) first occurs in the String (-1 if not found) String substring(int start, int end) returns the substring from indices start to (end-1) String toUpperCase() returns copy of String with all letters uppercase String toLowerCase() returns copy of String with all letters lowercase bool equals(String other) returns true if other String has same value int compareTo(String other) returns -1 if less than other String, 0 if equal to other String, 1 if greater than other String ALSO, from the Character class: char Character.toLowerCase(char ch) returns lowercase copy of ch char Character.toUpperCase(char ch) returns uppercase copy of ch boolean Character.isLetter(char ch) returns true if ch is a letter boolean Character.isLowerCase(char ch) returns true if lowercase letter boolean Character.isUpperCase(char ch) returns true if uppercase letter

22 Testing code when you design and write code, how do you know if it works?  run it a few times and assume it's OK? to be convinced that code runs correctly in all cases, you must analyze the code and identify special cases that are handled  then, define a test data set (inputs & corresponding outputs) that covers those cases  e.g., for Pig Latin, words that start with single consonant:"foo"  "oofay" "banana"  "ananabay" words that start with multiple consonants: "thrill"  "illthray" "cheese"  "eesechay" words that start with vowel: "apple"  "appleway" "oops"  "oopsway" words with no vowels: "nth"  "nthway" words that are capitalized: "Creighton"  "Eightoncray" "Omaha"  "Omahaway"

23 Unit testing in BlueJ unit testing : test each component (e.g., method) of a project independently  once the components are individually tested, their combined behavior must be tested IMPORTANT: when you make any changes to existing code, you must rerun all of its test data set BlueJ provides a mechanism for automatically performing unit testing  right-click on a class and select "Create Test Class"  this creates a separate class named "CLASS Test"  specify test data by right-clicking on Test class and selecting "Create Test Method"  after inputting a name (e.g., "SingleConsonant"), perform the desired steps (e.g., make method call & verify result), then click "End"  can create numerous test methods to cover the entire test data set  can run all tests in sequence simply by clicking on the "Run tests" button

24 Palindrome suppose we want to define a method to test whether a word is a palindrome (i.e., reads the same forwards and backwards) isPalindrome("bob")  trueisPalindrome("madam")  true isPalindrome("blob")  falseisPalindrome("madame")  false download StringUtils.java and StringUtilsTest.java define isPalindrome method returns true if the word is a palindrome extend your isPalindrome method to handle phrases  need to ignore spaces, punctuation & capitalization isPalindrome("Madam, I'm Adam.")  true isPalindrome("Able was I ere I saw Elba.")  true isPalindrome("A man, a plan, a canal: Panama.")  true