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

时间:2009-10-28 11:41:53

标签: c# .net extension-methods naming

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

信息:字符串类型的实用程序扩展方法。这个方法的重载可以做除了空间之外的字符[与参数中提供的内容]
目的:将所有中间或中间空格细分为单个空格 的实施例

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

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

我认为有些选择..

TrimIntermediate();  
TrimInbetween();

以下是请求中的代码:

这是递归的..

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;
    }
}

9 个答案:

答案 0 :(得分:14)

CollapseSpaces怎么样?

答案 1 :(得分:7)

CollapseSpaces仅适用于空格,但为了允许重载,您可能需要CollapseDelimitersCollapseWhitespace,如果它真的只是用于各种空白字符。

答案 2 :(得分: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);
    }
}

答案 3 :(得分:2)

在红宝石中,我相信他们称之为squeeze

答案 4 :(得分:2)

NormalizeWhitespace? 这种方式更清楚,处理后会留下可用的值。 正如其他人之前所说,“崩溃”听起来有些严谨,甚至可能意味着它可以返回一个空字符串。

答案 5 :(得分:1)

试试这个,它对我有用,并且似乎比递归解决方案复杂得多......

public static class StringExtensions
{
    public static string NormalizeWhitespace(this string input, char delim)
    {
        return System.Text.RegularExpressions.Regex.Replace(input.Trim(delim), "["+delim+"]{2,}", delim.ToString());
    }
}

可以这样称呼:

Console.WriteLine(input.NormalizeWhitespace(' '));

答案 6 :(得分:0)

CollapseExtraWhitespace

答案 7 :(得分:0)

PaulaIsBrilliant当然!

答案 8 :(得分:0)

makeCompact怎么样?