maliks
maliks

Reputation: 1112

string and arrays manipulation c#

Here is the code and it is working fine for a single input string

string[] stop_word = new string[] 
{ 
    "please", 
    "try", 
    "something", 
    "asking", 
    "-", 
    "(", ")", 
    "/", 
    ".", 
    "was", 
    "the" 
};

string str = "Please try something (by) yourself. -befor/e asking";
foreach (string word in stop_word)
{
    str = str.ToLower().Replace(word, "").Trim();
}

and the output is by yourself before and now I want to have

string str[] = new string[] 
{ 
    "Please try something-by yourself. before (CAD) asking/", 
    "cover, was adopted. The accuracy (of) the- change map was" 
};

and also may be the number of strings is greater than 2 then how to alter this above code to display the str array or store in a text file or database.

Please help with acknowledgements. Thanks

Upvotes: 0

Views: 1568

Answers (4)

currarpickt
currarpickt

Reputation: 2302

The code for single string need to be put inside a loop for string array

List<string> result = new List<string>();
for(int i =0; i<str.Length; i++)
{
    foreach (string word in stop_word)
    {
        str[i] = str[i].ToLower().Replace(word, "").Trim();
        str[i] = Regex.Replace(str[i], @"\s+", " ");
    }
    result.Add(str[i]);
}

foreach(string r in result)
{
    //this is to printout the result
    Console.WriteLine(r); 
}

You can try it here: https://dotnetfiddle.net/wg83gM

EDIT: Use regex to replace multiple spaces with one single space

Upvotes: 2

Bauss
Bauss

Reputation: 2797

You can use Select() for this.

var results = str.Select(x => {
    foreach (string word in stop_word)
    {
        x = x.ToLower().Replace(word, "").Trim();
    }
    return x;
}).ToList(); // You can use ToArray() if you wish too.

...

foreach(string result in results)
{
    Console.WriteLine(result);
}

Result:

by yourself before cad

cover, adopted accuracy of change map

Upvotes: 0

Luthando Ntsekwa
Luthando Ntsekwa

Reputation: 4218

Here is an easy to understand way to do it:

List<string> list = new List<string>();
foreach (string text in str)//loops through your str array
{
   string newText =text;
   foreach (string word in stop_word) //loops through your word array
    {
       newText =  newText.ToLower().Replace(word, "").Trim();
   }
   list.Add(newText);  //store the results in a list
}

Here is a working Demo

Upvotes: 1

Enigmativity
Enigmativity

Reputation: 117084

Does this work as you expect?

var results =
    str
        .Select(x => stop_word.Aggregate(x, (a, y) => a.ToLower().Replace(y, "").Trim()))
        .ToArray();

I used this input:

string[] str = new string[]
{
    "Please try something-by yourself. before (CAD) asking/",
    "cover, was adopted. The accuracy (of) the- change map was"
};

string[] stop_word = new string[]
{
    "please", "try", "something", "asking", "-", "(", ")", "/", ".", "was", "the"
};

I got this output:

by yourself before cad 
cover,  adopted  accuracy of  change map 

Upvotes: 0

Related Questions