110,534
社区成员
发帖
与我相关
我的任务
分享
string msg = "A2B4C1D5E11";
string ret = ConvertString(msg);
public string ConvertString(string input)
{
string pattern = @"\p{L}\d+"; // 或 @"[a-zA-Z]\d+"
Regex regex = new Regex(pattern);
MatchHandler handler = new MatchHandler();
MatchEvaluator evaluator = new MatchEvaluator(handler.Replace);
return regex.Replace(input, evaluator);
}
public class MatchHandler
{
public string Replace(Match match)
{
char letter = match.Value[0];
int count = Convert.ToInt32(match.Value.Substring(1));
return new string(letter, count);
}
}
string msg = "A2B4C1D5E11";
string ret = ConvertString(msg);
public string ConvertString(string input)
{
string pattern = @"\p{L}\d+"; // 或 @"[a-zA-Z]\d+"
Regex regex = new Regex(pattern);
List<LetterCount> list = new List<LetterCount>();
StringBuilder builder = new StringBuilder();
for (Match match = regex.Match(input); match.Success; match = match.NextMatch())
{
LetterCount let = new LetterCount(match.Value);
builder.Append(let.ToString());
}
return builder.ToString();
}
public struct LetterCount
{
public char Letter;
public int Count;
public LetterCount(string val)
{
Letter = val[0];
Count = Convert.ToInt32(val.Substring(1));
}
public string ToString()
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < Count; i++)
{
builder.Append(Letter);
}
return builder.ToString();
}
}
string str = Regex.Replace("A2B4C1D5E11", @"(\w)(\d+)", delegate
(Match m)
{
return new string(m.Groups[1].Value[0], Convert.ToInt32(m.Groups[2].Value));
});