2
我有以下方法(用C#/。NET編寫)。輸入文本僅包含字母(無數字)。返回值是另一個文本,在該文本中,超過兩個連續字符的組被替換爲一個字符,後面是重複次數。 例:aAAbbbcccc - > aAA3b4c正則表達式/ linq替換連續字符與計數
public static string Pack(string text)
{
if (string.IsNullOrEmpty(text)) return text;
StringBuilder sb = new StringBuilder(text.Length);
char prevChar = text[0];
int prevCharCount = 1;
for (int i = 1; i < text.Length; i++)
{
char c = text[i];
if (c == prevChar) prevCharCount++;
else
{
if (prevCharCount > 2) sb.Append(prevCharCount);
else if (prevCharCount == 2) sb.Append(prevChar);
sb.Append(prevChar);
prevChar = c;
prevCharCount = 1;
}
}
if (prevCharCount > 2) sb.Append(prevCharCount);
else if (prevCharCount == 2) sb.Append(prevChar);
sb.Append(prevChar);
return sb.ToString();
}
的方法是不是太長。但是,有沒有人有一個想法如何使用正則表達式更簡潔的方式?還是LINQ?
我會保持原樣。對於大多數人來說,Linq或Regex解決方案會更令人困惑。 – juharr 2010-12-09 13:21:52