我编写了一个字符串操作的扩展方法。我很困惑我该怎么命名 - 因为这将成为团队中前端开发人员将使用的基础库的一部分。这是班级成员的简介。
信息:字符串类型的实用程序扩展方法。这个方法的重载可以做除了空间之外的字符[与参数中提供的内容]
目的:将所有中间或中间空格细分为单个空格
的实施例
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;
}
}
答案 0 :(得分:14)
CollapseSpaces
怎么样?
答案 1 :(得分:7)
CollapseSpaces
仅适用于空格,但为了允许重载,您可能需要CollapseDelimiters
或CollapseWhitespace
,如果它真的只是用于各种空白字符。
答案 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
怎么样?