lumetorm
lumetorm

Reputation: 67

Is it possible to remove every occurance of a character and one character after it from entire string using regex?

Is it possible to remove every occurance of a character + one after it from entire string?

Here's a code that achieves what I described, but is rather big:

private static string FilterText(string text){
string filteredText = text;

while (true)
{
    int comaIndex = filteredText.IndexOf('.');

    if (comaIndex == -1)
    {
        break;
    }
    else if (comaIndex > 1)
    {
        filteredText = filteredText.Substring(0, comaIndex) + filteredText.Substring(comaIndex + 2);
    }
    else if (comaIndex == 1)
    {
        filteredText = filteredText[0] + filteredText.Substring(comaIndex + 2);
    }
    else
    {
        filteredText = filteredText.Substring(comaIndex + 2);
    }
}

return filteredText;
}

This code would turn for example input .Otest.1 .2.,string.w.. to test string

Is it possible to achieve the same result using regex?

Upvotes: 1

Views: 58

Answers (2)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 627469

You want to use

var output = Regex.Replace(text, @"\..", RegexOptions.Singleline);

See the .NET regex demo. Details:

  • \. - matches a dot
  • . - matches any char including a line feed char due to the RegexOptions.Singleline option used.

Upvotes: 2

Alireza
Alireza

Reputation: 2123

Try this pattern: (?<!\.)\w+

code:

using System;
using System.Text.RegularExpressions;

public class Test{
    public static void Main(){
        string str = ".Otest.1 .2.,string.w..";
        Console.WriteLine(FilterText(str));

    }
    private static string FilterText(string text){
        string pattern = @"(?<!\.)\w+";  
        string result = "";
        foreach(Match m in Regex.Matches(text, pattern)){
            result += m + " ";
        }
        return result;
    }
}

output:

test string 

Upvotes: 0

Related Questions