Click here to Skip to main content
15,867,453 members
Articles / Programming Languages / C#
Tip/Trick

Manipulating a string array using a Lambda Expression

Rate me:
Please Sign up or sign in to vote.
3.00/5 (7 votes)
7 Nov 2012CPOL 36.1K   4   8
This code will accept an input string and will store the first character of every array element in minimal lines of code.

Introduction

Recently I came across a scenario where I was needed to store only the first character of an input string array. It is easy to do it using loops, however I tried to get the best benefits of lambda expressions which will help write minimal number of lines to achieve this.

Using the code

In this case, I have an input array string and I want to crop everything except the first character from each array element. I am using the Substring method inside a lambda expression to achieve this. The code is as follows:

C#
string[] input1 = new string[] { "Bharti", "Mangesh", "Akash", "Bhavya", "Chetan" };
//OR even if input is comma seperated, multi spaced string 
//string[] input1 = new string[] { "Bharti, Mangesh,Akash, Bhavya, Chetan" }; 

string instr = string.Join(",", input1); 
string[] output1 = instr.Split(',').Select(a => { var t = 
   a.Trim().ToUpper().Substring(0, 1); return t; }).ToArray<string>();

Here the string array output1 will store output as shown below:

output1[0]="B"
output1[1]="M"
output1[2]="A"
output1[3]="B"
output1[4]="C"

The above code has limitation that it works in fair cases and does not handle null values. besides we can replace the substring method with first method inside lambda expression which will do the same task.

//input string which contain null element 
string input1 = "Bharti, Mangesh,Akash,, Bhavya, Chetan";
string[] instr = input1.Split(new char[]{','},  StringSplitOptions.RemoveEmptyEntries);
IEnumerable<char> ie = instr.Where(item => item != null).Select(item => item.TrimStart().First()); 

Here the output enumerable can be converted to char array using ToArray.

We can achive this result using Loop also which goes like this:

C#
string[] output1 = new string[instr.Length];
for (int i = 0, j = instr.Length; i < j; i++)
{
     string item = instr[i];
     if (!string.IsNullOrWhiteSpace(item))
     {
          output1[i] = new String(item.TrimStart().Substring(0, 1).ToUpper().ToCharArray());
     }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Melstar Infotech Ltd.
India India
"Neeraj is very hardworking and talented guy. i worked with him for 3 years,he is helping in nature and will resolved any difficulty or coding problem with lot of enthusiasm with quality deliverable."

(Courtesy: LinkedIn endorsement posted by my ex-colleague Roshan Basekar)

- Thanks Roshan
-----------------------------------------------------------------------------------

Comments and Discussions

 
GeneralMy vote of 1 Pin
zlanizer6-Nov-12 17:29
zlanizer6-Nov-12 17:29 
GeneralRe: My vote of 1 Pin
Neeraj_Maurya7-Nov-12 0:04
Neeraj_Maurya7-Nov-12 0:04 
General[My vote of 2] Post of poor quality Pin
Matej Hlatky6-Nov-12 10:14
professionalMatej Hlatky6-Nov-12 10:14 
GeneralRe: [My vote of 2] Post of poor quality Pin
Neeraj_Maurya7-Nov-12 3:17
Neeraj_Maurya7-Nov-12 3:17 
General[My vote of 2] Clever, but fewer lines of code is not the best metric Pin
Matt T Heffron6-Nov-12 8:53
professionalMatt T Heffron6-Nov-12 8:53 
GeneralRe: [My vote of 2] Clever, but fewer lines of code is not the best metric Pin
Neeraj_Maurya7-Nov-12 3:21
Neeraj_Maurya7-Nov-12 3:21 
GeneralMy vote of 5 Pin
Christian Amado6-Nov-12 8:15
professionalChristian Amado6-Nov-12 8:15 
GeneralRe: My vote of 5 Pin
Neeraj_Maurya6-Nov-12 17:13
Neeraj_Maurya6-Nov-12 17:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.