processing and manipulating text information svetlin nakov telerik software academy...
TRANSCRIPT
![Page 1: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/1.jpg)
Strings and Text Processing
Processing and Manipulating Text Information
Svetlin Nakov
Telerik Software Academyacademy.telerik.com
Technical Trainerwww.nakov.com
http://csharpfundamentals.telerik.com
![Page 2: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/2.jpg)
Table of Contents1. 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
2
![Page 3: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/3.jpg)
Table of Contents (2)5. Building and Modifying Strings
Why the + Operator is Slow?
Using the StringBuilder Class
6. Formatting Strings Formatting Numbers, Dates
and Currency
7. Cultures and Culture-Sensitive Formatting Accessing and Assigning the Current
Culture
8. Parsing Numbers and Dates 3
![Page 4: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/4.jpg)
What Is String?
![Page 5: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/5.jpg)
What Is String? Strings are sequences of characters
Each character is a Unicode symbol Represented by the string data type in C# (System.String)
Example:string s = "Hello, C#";
H e l l o , C #s
5
![Page 6: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/6.jpg)
The System.String Class Strings are represented by System.String objects in .NET Framework String objects contain an immutable
(read-only) sequence of characters Strings use Unicode to support
multiple languages and alphabets Strings are stored in the dynamic memory (managed heap)
System.String is reference type6
![Page 7: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/7.jpg)
The System.String Class (2)
String objects are like arrays of characters (char[]) Have fixed length (String.Length) Elements can be accessed directly
by index The index is in the range [0...Length-1]string s = "Hello!";
int len = s.Length; // len = 6char ch = s[1]; // ch = 'e'
0 1 2 3 4 5
H e l l o !index =
s[index] =
7
![Page 8: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/8.jpg)
Strings – First Example
static void Main(){ string s = "Stand up, stand up, Balkan Superman."; Console.WriteLine("s = \"{0}\"", s); Console.WriteLine("s.Length = {0}", s.Length); for (int i = 0; i < s.Length; i++) { Console.WriteLine("s[{0}] = {1}", i, s[i]); }}
8
![Page 9: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/9.jpg)
Strings – First ExampleLive Demo
![Page 10: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/10.jpg)
Creating and Using StringsDeclaring, Creating, Reading and
Printing
![Page 11: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/11.jpg)
Several ways of declaring string variables: Using the C# keyword string Using the .NET's fully qualified
class name System.String
The above three declarations are equivalent
Declaring Strings
string str1;System.String str2;String str3;
11
![Page 12: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/12.jpg)
Creating Strings Before initializing a string variable has null value
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
12
![Page 13: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/13.jpg)
Creating Strings (2) Not initialized variables has value of null
Assigning a string literal
Assigning from another string variable
Assigning from the result of string operation
string s; // s is equal to null
string s = "I am a string literal!";
string s2 = s;
string s = 42.ToString();
13
![Page 14: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/14.jpg)
Reading and Printing Strings
Reading strings from the console Use the method Console.ReadLine()
string s = Console.ReadLine();
Console.Write("Please enter your name: "); string name = Console.ReadLine();Console.Write("Hello, {0}! ", name);Console.WriteLine("Welcome to our party!");
Printing strings to the console Use the methods Write() and WriteLine()
14
![Page 15: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/15.jpg)
Reading and Printing StringsLive Demo
![Page 16: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/16.jpg)
Comparing, Concatenating, Searching, Extracting Substrings,
Splitting
Manipulating Strings
![Page 17: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/17.jpg)
Comparing Strings Several ways to compare two strings: Dictionary-based string comparison
Case-insensitive
Case-sensitive
int result = string.Compare(str1, str2, true);// result == 0 if str1 equals str2// result < 0 if str1 is before str2// result > 0 if str1 is after str2
string.Compare(str1, str2, false);
17
![Page 18: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/18.jpg)
Comparing Strings (2) Equality checking by operator ==
Performs case-sensitive compare
Using the case-sensitive Equals() method The same effect like the operator ==
if (str1 == str2){ …}
if (str1.Equals(str2)){ …}
18
![Page 19: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/19.jpg)
Comparing Strings – Example
Finding the first string in a lexicographical order from a given list of strings:string[] towns = {"Sofia", "Varna", "Plovdiv", "Pleven", "Bourgas", "Rousse", "Yambol"};string firstTown = towns[0];for (int i=1; i<towns.Length; i++){ string currentTown = towns[i]; if (String.Compare(currentTown, firstTown) < 0) { firstTown = currentTown; }}Console.WriteLine("First town: {0}", firstTown);
19
![Page 20: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/20.jpg)
Live Demo
Comparing Strings
![Page 21: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/21.jpg)
Concatenating Strings
There are two ways to combine strings: Using the Concat() method
Using the + or the += operators
Any object can be appended to a string
string str = String.Concat(str1, str2);
string str = str1 + str2 + str3;string str += str1;
string name = "Peter";int age = 22;string s = name + " " + age; // "Peter 22"
21
![Page 22: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/22.jpg)
Concatenating Strings – Example
string firstName = "Svetlin";string lastName = "Nakov";
string fullName = firstName + " " + lastName;Console.WriteLine(fullName);// Svetlin Nakov
int age = 25;
string nameAndAge = "Name: " + fullName + "\nAge: " + age;Console.WriteLine(nameAndAge);// Name: Svetlin Nakov// Age: 25
22
![Page 23: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/23.jpg)
Live Demo
Concatenating Strings
![Page 24: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/24.jpg)
Searching in Strings
Finding a character or substring within given string First occurrence
First occurrence starting at given position
Last occurrence
IndexOf(string str)
IndexOf(string str, int startIndex)
LastIndexOf(string)
24
![Page 25: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/25.jpg)
Searching in Strings – Example
string str = "C# Programming Course";int index = str.IndexOf("C#"); // index = 0index = str.IndexOf("Course"); // index = 15index = str.IndexOf("COURSE"); // index = -1// IndexOf is case-sensetive. -1 means not foundindex = str.IndexOf("ram"); // index = 7index = str.IndexOf("r"); // index = 4index = str.IndexOf("r", 5); // index = 7index = str.IndexOf("r", 8); // index = 18
0 1 2 3 4 5 6 7 8 9 10 11 12 13 …
C # P r o g r a m m i n g …
index = s[index] =
25
![Page 26: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/26.jpg)
Live Demo
Searching in
Strings
![Page 27: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/27.jpg)
Extracting Substrings
Extracting substrings str.Substring(int startIndex, int length)
str.Substring(int startIndex)
string filename = @"C:\Pics\Rila2009.jpg";string name = filename.Substring(8, 8);// name is Rila2009
string filename = @"C:\Pics\Summer2009.jpg";string nameAndExtension = filename.Substring(8);// nameAndExtension is Summer2009.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
27
![Page 28: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/28.jpg)
Live Demo
Extracting Substrings
![Page 29: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/29.jpg)
Splitting Strings To split a string by given separator(s)
use the following method:
Example:
string[] Split(params char[])
string listOfBeers = "Amstel, Zagorka, Tuborg, Becks.";string[] beers = listOfBeers.Split(' ', ',', '.');Console.WriteLine("Available beers are:");foreach (string beer in beers){ Console.WriteLine(beer);}
29
![Page 30: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/30.jpg)
Live Demo
Splitting Strings
![Page 31: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/31.jpg)
Other String OperationsReplacing Substrings, Deleting
Substrings, Changing Character Casing, Trimming
![Page 32: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/32.jpg)
Replacing and Deleting Substrings
Replace(string, string) – replaces all occurrences of given string with another The result is new string (strings are
immutable)
Remove(index, length) – deletes part of a string and produces new string as result
string cocktail = "Vodka + Martini + Cherry";string replaced = cocktail.Replace("+", "and");// Vodka and Martini and Cherry
string price = "$ 1234567";string lowPrice = price.Remove(2, 3);// $ 4567
32
![Page 33: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/33.jpg)
Changing Character Casing
Using method ToLower()
Using method ToUpper()
string alpha = "aBcDeFg";string lowerAlpha = alpha.ToLower(); // abcdefgConsole.WriteLine(lowerAlpha);
string alpha = "aBcDeFg";string upperAlpha = alpha.ToUpper(); // ABCDEFGConsole.WriteLine(upperAlpha);
33
![Page 34: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/34.jpg)
Trimming White Space Using Trim()
Using Trim(chars)
Using TrimStart() and TrimEnd()
string s = " example of white space ";string clean = s.Trim();Console.WriteLine(clean);
string s = " \t\nHello!!! \n";string clean = s.Trim(' ', ',' ,'!', '\n','\t');Console.WriteLine(clean); // Hello
string s = " C# ";string clean = s.TrimStart(); // clean = "C# "
34
![Page 35: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/35.jpg)
Other String OperationsLive Demo
![Page 36: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/36.jpg)
Building and Modifying Strings
Using the StringBuilder Class
![Page 37: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/37.jpg)
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, very inefficiently!public static string DupChar(char ch, int count){ string result = ""; for (int i=0; i<count; i++) result += ch; return result;}
Very bad practice.
Avoid this! 37
![Page 38: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/38.jpg)
Slow Building Strings with +Live Demo
![Page 39: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/39.jpg)
StringBuilder: How It Works?
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 , C # !StringBuilder:
Length=9Capacity=15
Capacity
used buffer(Length)
unused buffer
39
![Page 40: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/40.jpg)
How the + Operator Performs String
Concatenations? Consider the following string
concatenation:
It is equivalent to this code:
Several new objects are created and left to the garbage collector for deallocation What happens when using + in a
loop?
string result = str1 + str2;
StringBuilder sb = new StringBuilder();sb.Append(str1);sb.Append(str2);string result = sb.ToString();
40
![Page 41: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/41.jpg)
The StringBuilder Class
StringBuilder(int capacity) constructor allocates in advance buffer of given size
By default 16 characters are allocated
Capacity holds the currently allocated space (in characters)
this[int index] (indexer in C#) gives access to the char value at given position
Length holds the length of the string in the buffer
41
![Page 42: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/42.jpg)
The StringBuilder Class (2)
Append(…) appends a string or another object after the last character in the buffer
Remove(int startIndex, int length) removes the characters in given range
Insert(int index, string str) inserts given string (or object) at given position
Replace(string oldStr, string newStr) replaces all occurrences of a substring
ToString() converts the StringBuilder to String
42
![Page 43: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/43.jpg)
Changing the Contents of a String with StringBuilder
Use the System.Text.StringBuilder class for modifiable strings of characters:
Use StringBuilder if you need to keep adding characters to a string
public static string ReverseString(string s){ StringBuilder sb = new StringBuilder(); for (int i = s.Length-1; i >= 0; i--) sb.Append(s[i]); return sb.ToString();}
43
![Page 44: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/44.jpg)
StringBuilder – Another Example
Extracting all capital letters from a stringpublic static string ExtractCapitals(string s){ StringBuilder result = new StringBuilder(); for (int i = 0; i<s.Length; i++) {
if (Char.IsUpper(s[i])) { result.Append(s[i]); } } return result.ToString();}
44
![Page 45: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/45.jpg)
Using StringBuilderLive Demo
![Page 46: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/46.jpg)
Formatting StringsUsing ToString() and
String.Format()
![Page 47: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/47.jpg)
Method ToString() All classes in C# have public virtual method ToString() Returns a human-readable, culture-
sensitive string representing the object
Most .NET Framework types have own implementation of ToString() int, float, bool, DateTime
int number = 5;string s = "The number is " + number.ToString();Console.WriteLine(s); // The number is 5
47
![Page 48: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/48.jpg)
Method ToString(format)
We can apply specific formatting when converting objects to string ToString(formatString) method
int number = 42;string s = number.ToString("D5"); // 00042
s = number.ToString("X"); // 2A
// Consider the default culture is Bulgarians = number.ToString("C"); // 42,00 лв
double d = 0.375;s = d.ToString("P2"); // 37,50 %
48
![Page 49: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/49.jpg)
Formatting Strings The formatting strings are different
for the different types Some formatting strings for numbers:
D – number (for integer types)
C – currency (according to current culture)
E – number in exponential notation
P – percentage
X – hexadecimal number
F – fixed point (for real numbers)49
![Page 50: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/50.jpg)
Method String.Format()
Applies templates for formatting strings Placeholders are used for dynamic
text Like Console.WriteLine(…)string template = "If I were {0}, I would {1}.";string sentence1 = String.Format( template, "developer", "know C#");Console.WriteLine(sentence1);// If I were developer, I would know C#.
string sentence2 = String.Format( template, "elephant", "weigh 4500 kg");Console.WriteLine(sentence2);// If I were elephant, I would weigh 4500 kg.
50
![Page 51: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/51.jpg)
Composite Formatting The placeholders in the composite formatting strings are specified as follows:
Examples:
{index[,alignment][:formatString]}
double d = 0.375;s = String.Format("{0,10:F5}", d);// s = " 0,37500"
int number = 42;Console.WriteLine("Dec {0:D} = Hex {1:X}", number, number);// Dec 42 = Hex 2A
51
![Page 52: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/52.jpg)
Formatting Dates Dates have their own formatting strings d, dd – day (with/without leading
zero) M, MM – month yy, yyyy – year (2 or 4 digits) h, HH, m, mm, s, ss – hour, minute,
second
DateTime now = DateTime.Now;Console.WriteLine( "Now is {0:d.MM.yyyy HH:mm:ss}", now);// Now is 31.11.2009 11:30:32
52
![Page 53: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/53.jpg)
Cultures Cultures in .NET specify formatting / parsing settings specific to country / region / language
Printing the current culture:
Changing the current culture:
Culture-sensitive ToString():53
Console.WriteLine(System.Threading. Thread.CurrentThread.CurrentCulture);
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
CultureInfo culture = new CultureInfo("fr-CA");string s = number.ToString("C", culture); // 42,00 $
![Page 54: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/54.jpg)
Parsing Numbers and Dates
Parsing numbers and dates is culture-sensitive
Parsing a real number using "." as separator:
Parsing a date in specific format:
54
string str = "3.14";Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;float f = float.Parse(str); // f = 3.14
string dateStr = "25.07.2011";DateTime date = DateTime.ParseExact(dateStr, "dd.MM.yyyy", CultureInfo.InvariantCulture);
![Page 55: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/55.jpg)
Formatting StringsLive Demo
![Page 56: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/56.jpg)
Summary Strings are immutable sequences of
characters (instances of System.String) Declared by the keyword string in C#
Can be initialized by string literals Most important string processing
members are: Length, this[], Compare(str1, str2), IndexOf(str), LastIndexOf(str), Substring(startIndex, length), Replace(oldStr, newStr), Remove(startIndex, length), ToLower(), ToUpper(), Trim()
56
![Page 57: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/57.jpg)
Summary (2) Objects can be converted to strings and can be formatted in different styles (using ToString() method)
Strings can be constructed by using placeholders and formatting strings (String.Format(…))
57
![Page 58: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/58.jpg)
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране, книги – безплатно от Наков
безплатен курс "Качествен програмен код"
алго академия – състезателно програмиране, състезания
ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия
курс мобилни приложения с iPhone, Android, WP7, PhoneGap
free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно
?
? ? ??
?? ?
?
?
?
??
?
?
? ?
Questions?
?
Strings and Text Processing
http://csharpfundamentals.telerik.com
![Page 59: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/59.jpg)
Exercises
1. Describe the strings in C#. What is typical for the string data type? Describe the most important methods of the String class.
2. Write a program that reads a string, reverses it and prints the result at the console.
Example: "sample" "elpmas".
3. 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)).
59
![Page 60: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/60.jpg)
Exercises (2)
4. 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:
The result is: 9.
We are living in an 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.
60
![Page 61: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/61.jpg)
Exercises (3)
5. You are given a text. Write a program that changes the text in all regions surrounded by the tags <upcase> and </upcase> to uppercase. The tags cannot be nested. Example:
The expected result:
We are living in a <upcase>yellow submarine</upcase>. We don't have <upcase>anything</upcase> else.
We are living in a YELLOW SUBMARINE. We don't have ANYTHING else.
61
![Page 62: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/62.jpg)
Exercises (4)
6. Write a program that reads from the console a string of maximum 20 characters. If the length of the string is less than 20, the rest of the characters should be filled with '*'. Print the result string into the console.
7. Write a program that encodes and decodes a string using given encryption key (cipher). The key consists of a sequence of characters. The encoding/decoding is done by performing XOR (exclusive or) operation over the first letter of the string with the first of the key, the second – with the second, etc. When the last key character is reached, the next is the first.
62
![Page 63: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/63.jpg)
Exercises (5)8. Write a program that extracts from a
given text all sentences containing given word.
Example: The word is "in". The text is:
The expected result is:
Consider that the sentences are separated by "." and the words – by non-letter symbols.
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.
We are living in a yellow submarine.We will move out of it in 5 days.
63
![Page 64: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/64.jpg)
Exercises (6)
9. 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:
Words: "PHP, CLR, Microsoft"The expected result:
Microsoft announced its next generation PHP compiler today. It is based on .NET Framework 4.0 and is implemented as a dynamic language in CLR.
********* announced its next generation *** compiler today. It is based on .NET Framework 4.0 and is implemented as a dynamic language in ***.
64
![Page 65: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/65.jpg)
Exercises (7)
10. Write a program that converts a string to a sequence of C# Unicode character literals. Use format strings. Sample input:
Expected output:
11. Write a program that reads a number and prints it as a decimal number, hexadecimal number, percentage and in scientific notation. Format the output aligned right in 15 symbols.
Hi!
\u0048\u0069\u0021
65
![Page 66: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/66.jpg)
Exercises (8)
12. Write a program that parses an URL address given in the format:
and extracts from it the [protocol], [server] and [resource] elements. For example from the URL http://www.devbg.org/forum/index.php the following information should be extracted:
[protocol] = "http"[server] = "www.devbg.org"[resource] = "/forum/index.php"
[protocol]://[server]/[resource]
66
![Page 67: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/67.jpg)
Exercises (9)
13. Write a program that reverses the words in given sentence.
Example: "C# is not C++, not PHP and not Delphi!" "Delphi not and PHP, not C++ not is C#!".
14. A dictionary is stored as a sequence of text lines containing words and their explanations. Write a program that enters a word and translates it by using the dictionary. Sample dictionary:
.NET – platform for applications from MicrosoftCLR – managed execution environment for .NETnamespace – hierarchical organization of classes 67
![Page 68: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/68.jpg)
Exercises (10)
15. Write a program that replaces in a HTML document given as string all the tags <a href="…">…</a> with corresponding tags [URL=…]…/URL]. Sample HTML fragment:<p>Please visit <a href="http://academy.telerik. com">our site</a> to choose a training course. Also visit <a href="www.devbg.org">our forum</a> to discuss the courses.</p>
<p>Please visit [URL=http://academy.telerik. com]our site[/URL] to choose a training course. Also visit [URL=www.devbg.org]our forum[/URL] to discuss the courses.</p>
68
![Page 69: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/69.jpg)
Exercises (11)
16. Write a program that reads two dates in the format: day.month.year and calculates the number of days between them. Example:
17.Write a program that reads a date and time given in the format: day.month.year hour:minute:second and prints the date and time after 6 hours and 30 minutes (in the same format) along with the day of week in Bulgarian.
Enter the first date: 27.02.2006Enter the second date: 3.03.2004Distance: 4 days
69
![Page 70: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/70.jpg)
Exercises (12)
18. Write a program for extracting all email addresses from given text. All substrings that match the format <identifier>@<host>…<domain> should be recognized as emails.
19. Write a program that extracts from a given text all dates that match the format DD.MM.YYYY. Display them in the standard date format for Canada.
20. Write a program that extracts from a given text all palindromes, e.g. "ABBA", "lamal", "exe".
70
![Page 71: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/71.jpg)
Exercises (13)21. Write a program that reads a string
from the console and prints all different letters in the string along with information how many times each letter is found.
22. Write a program that reads a string from the console and lists all different words in the string along with information how many times each word is found.
23. 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".
71
![Page 72: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/72.jpg)
Exercises (14)
24. Write a program that reads a list of words, separated by spaces and prints the list in an alphabetical order.
25. Write a program that extracts from given HTML file its title (if available), and its body text without the HTML tags. Example:
<html> <head><title>News</title></head> <body><p><a href="http://academy.telerik.com">Telerik Academy</a>aims to provide free real-world practical training for young people who want to turn into skillful .NET software engineers.</p></body></html> 72
![Page 73: Processing and Manipulating Text Information Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer](https://reader031.vdocuments.site/reader031/viewer/2022012918/56649efc5503460f94c0fe2a/html5/thumbnails/73.jpg)
Free Trainings @ Telerik Academy
“C# Programming @ Telerik Academy csharpfundamentals.telerik.com
Telerik Software Academy academy.telerik.com
Telerik Academy @ Facebook facebook.com/TelerikAcademy
Telerik Software Academy Forums forums.academy.telerik.com