从字符串中删除字符的所有实例

时间:2018-10-04 18:01:19

标签: c# regex string

我想从字符串中删除字符的所有实例,除非该字符后跟任何形式或空格。我还没有编写单元测试,但是下面的代码似乎可以实现我想要的功能(可能现在忘记一两个边缘情况了)。虽然感觉很笨拙。有人可以建议改进吗?

public string Strip(string text, char c)
{
    if (!string.IsNullOrEmpty(text))
    {
        bool characterIsInString = true;
        int currentIndex = 0;

        while (characterIsInString)
        {
            currentIndex = text.IndexOf(c, currentIndex + 1);

            if (currentIndex != -1)
            {
                var charAfter = text.Substring(currentIndex + 1, 1);

                if (charAfter != " ")
                {
                    text = text.Remove(currentIndex, 1);
                }
            }
            else
            {
                characterIsInString = false;
            }
        }
    }

    return text;
}

3 个答案:

答案 0 :(得分:4)

您可以使用正则表达式(这里我假设字符是x):

string result = Regex.Replace( input , "x(?=\\S)" , "");

Live Demo。请检查它是否使用了很少的步骤来找到它。

答案 1 :(得分:1)

我建议您使用以下代码:

public string Strip(string text, char c)
{
    Regex regex = new Regex(c.ToString() + @"[^\s]");
    return regex.Replace(text, "");
}

如果char中的textnot,然后是白色Space,则会删除let protocolo = txtProtocolo.text! var request = URLRequest(url: url) let parameters = "protocolo=\(protocolo) " request.httpMethod = "POST" request.httpBody = parameters.data(using: String.Encoding.utf8) URLSession.shared.dataTask(with: request) { (data, response, error) in ....

这是一个非常简单且快速的正则表达式。

答案 2 :(得分:0)

如果要替换字符 您可以使用Replace方法替换char

关注代码:

Console.ReadLine().Replace("e","h");