As already said, this is question has nothing in common with regex. Well, except pattern, but you using it in diferent context. You need just to format some strings, using some pattern.
You could use this function for example:
public string ConvertToFormat(string strToFormat, string pattern)
{
if (pattern.Count(c => c == 'X') != strToFormat.Length)
throw new ArgumentException("Number of placeholders in pattern is different from number of characters in the input string!");
StringBuilder sb = new StringBuilder();
int j = 0;
for(int i = 0; i < pattern.Length; i++)
if (pattern[i] == 'X')
{
sb.Append(strToFormat[j]);
j++;
}
else
sb.Append(pattern[i]);
return sb.ToString();
}
and use like this:
string result = ConvertToFormat("1234567890", "XXXX-XXXX-XX");
result = ConvertToFormat("1234567890", "XXX-XXX-XXX-X");
result = ConvertToFormat("1234567890", "XXX=XXX=XXX=X");
UPDATE
Dynamic solution with regtex:
public string RegexConvertToFormat(string strToFormat, int blockSize, char separator)
{
return Regex.Replace("1235645847", ".{" + blockSize + "}" , "$&" + separator).TrimEnd(separator);
}
Usage:
string s = RegexConvertToFormat("1234567890", 4, '-');
s = RegexConvertToFormat("1234567890", 3, '-');
s = RegexConvertToFormat("1234567890", 3, '=');
XXXXXXXXX*Xpattern should produce123456789*0, no?