我该怎么命名这个扩展方法?

thi*_*eek 3 .net c# extension-methods naming

我已经编写了一个字符串操作的扩展方法.我很困惑我该怎么命名 - 因为这将成为团队中前端开发人员将使用的基础库的一部分.这是班级成员的简介.

信息:字符串类型的实用程序扩展方法.此方法的重载可能与空格[与参数中提供的内容]之外的字符相同.
目的:将所有中间或中间空格向下调整到单个空格.
例如:

string Input = "Hello      Token1    Token2     Token3    World!  ";
string Output = Input.TrimSpacesInBetween();
//Output will be: "Hello Token1 Token2 Token3 World!"
Run Code Online (Sandbox Code Playgroud)

我已阅读[实际上我正在阅读]框架设计指南,但这似乎困扰着我.

我认为有些选择..

TrimIntermediate();  
TrimInbetween();
Run Code Online (Sandbox Code Playgroud)

这是请求中的代码:

这是递归..

public static class StringExtensions
{
    public static string Collapse(this string str)
    {
        return str.Collapse(' ');
    }

    public static string Collapse(this string str, char delimeter)
    {
        char[] delimeterts = new char[1];
        delimeterts[0] = delimeter;
        str = str.Trim(delimeterts);

        int indexOfFirstDelimeter = str.IndexOf(delimeter);
        int indexTracker = indexOfFirstDelimeter + 1;

        while (str[indexTracker] == delimeter)
            indexTracker++;

        str = str.Remove(indexOfFirstDelimeter + 1, indexTracker - indexOfFirstDelimeter - 1);
        string prevStr = str.Substring(0, indexOfFirstDelimeter + 1);
        string nextPart = str.Substring(indexOfFirstDelimeter + 1);

        if (indexOfFirstDelimeter != -1)
            nextPart = str.Substring(indexOfFirstDelimeter + 1).Collapse(delimeter);

        string retStr = prevStr + nextPart;

        return retStr;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kon*_*man 14

怎么样CollapseSpaces


Jon*_*eet 7

CollapseSpaces仅适用于空间,但允许您可能需要的重载,CollapseDelimiters或者CollapseWhitespace它实际上只适用于各种空白字符.


Luk*_*keH 6

不是真正的答案,更多是对您发布的代码的评论......

通过使用正则表达式,您可以使方法更短,更容易理解.(我的猜测是它可能比递归字符串操作表现更好,但你需要进行基准测试才能确定.)

public static class StringExtensions
{
    public static string Collapse(this string str)
    {
        return str.Collapse(' ');
    }

    public static string Collapse(this string str, char delimiter)
    {
        str = str.Trim(delimiter);

        string delim = delimiter.ToString();
        return Regex.Replace(str, Regex.Escape(delim) + "{2,}", delim);
    }
}
Run Code Online (Sandbox Code Playgroud)