Michael Hutter
Michael Hutter

Reputation: 1532

How to remove a charlist from a string

How can I remove a specific list of chars from a string?

For example I have the string Multilanguage File07 and want to remove all vowels, spaces and numbers to get the string MltlnggFl.

Is there any shorter way than using a foreach loop?

string MyLongString = "Multilanguage File07";
string MyShortString = MyLongString;
char[] charlist = new char[17]
  { 'a', 'e', 'i', 'o', 'u',
    '0', '1', '2', '3', '4', '5',
    '6', '7', '8', '9', '0', ' ' };
foreach (char letter in charlist)
{
    MyShortString = MyShortString.Replace(letter.ToString(), "");
}

Upvotes: 0

Views: 149

Answers (4)

Syed Nazim Hussain
Syed Nazim Hussain

Reputation: 21

public void removeVowels()
{
       string str = "MultilanguAge File07";
       var chr = str.Where(c => !"aeiouAEIOU0-9 ".Contains(c)).ToList();
       Console.WriteLine(string.Join("", chr));
}

1st line: creating desire string variable.

2nd line: using linq ignore vowels words [captital case,lower case, 0-9 number & space] and convert into list.

3rd line: combine chr list into one line string with the help of string.join function.

result: MltlnggFl7

Note: removeVowels function not only small case, 1-9 number and empty space but also remove capital case word from string.

Upvotes: 0

Michael Hutter
Michael Hutter

Reputation: 1532

Use this code to replace a list of chars within a string:

using System.Text.RegularExpressions;
string MyLongString = "Multilanguage File07";
string MyShortString = Regex.Replace(MyLongString, "[aeiou0-9 ]", "");

Result:
Multilanguage File07 => MltlnggFl
Text from which some chars should be removed 12345 => Txtfrmwhchsmchrsshldbrmvd

Explanation of how it works:
The Regex Expression I use here, is a list of independend chars defined by the brackets []
=> [aeiou0-9 ]
The Regex.Replace() iterates through the whole string and looks at each character, if it will match one of the characters within the Regular Expression.
Every matched letter will be replaced by an empty string ("").

Upvotes: 2

Gauravsa
Gauravsa

Reputation: 6524

How about this:

var charList = new HashSet<char>(“aeiou0123456789 “);

MyLongString = new string(MyLongString.Where(c => !charList.Contains(c)).ToArray());

Upvotes: 1

Michał Turczyn
Michał Turczyn

Reputation: 37347

Try this pattern: (?|([aeyuio0-9 ]+)). Replace it with empty string and you will get your desird result.

I used branch reset (?|...) so all characters are captured into one group for easier manipulation.

Demo.

Upvotes: 0

Related Questions