Further to the other solutions...
You can split on multiple characters. For example
string A = "Name:venkat,PhNo:77089,City:Test";
var attempt1 = A.Split(':',',');
foreach (var s in attempt1)
Console.WriteLine(s);
Console.WriteLine("Stuff I need : {0}, {1}, {2}", attempt1[1], attempt1[3], attempt1[5]);
gives results of
Name
venkat
PhNo
77089
City
Test
Stuff I need : venkat, 77089, Test
Which is fine if the data Is always in that order. But what if this string is a string of named parameters to a console application for example. Imagine the user has not quite got it right and sends in a string that looks like
A = "Name:venkat,City:Test,Another:Thing,PhNo:77089";
Then you would get
Stuff I need : venkat, Test, Thing
Hm, not what I was wanting.
However, if you split just on the comma (,) you will essentially get a list of paired data
itemname:value
A = "Name:venkat,City:Test,Another:Thing,PhNo:77089";
var attempt2 = A.Split(',');
foreach (var s in attempt2)
Console.WriteLine(s);
gives results
Name:venkat
Another:Thing
City:Test
PhNo:77089
which you can then
search for the items you need rather than using hard-code positions
var res = attempt2.ToList()
.Find(x => x.StartsWith("PhNo"))
.Split(':')
[1];
Console.WriteLine("The Phone number: {0}", res);
gives
The Phone number: 77089
Obviously a lot more long-winded than the first attempt, and longer-winded than the regex solution, but I suggest more flexible, particularly if you have more items to add to the list.