using System.Collections.Generic;
public static void Main()
var address = "A*2,V*2,N*2,J*1,S*2,4*m,S*rAAAAAAAAAAAAA A*2,V*2,N*2,J*1,S*2,4*m,S*r";
string[] addressLines = SplitAddress(address);
for (int i = 0; i < addressLines.Length; i++)
Console.WriteLine("Line {0}: {1}", i+1, addressLines[i]);
public static string[] SplitAddress(string address)
if (string.IsNullOrEmpty(address))
return new string[4] { "", "", "", "" };
List<string> addressLines = new List<string>();
StringBuilder currentLine = new StringBuilder();
string[] tokens = address.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < address.Length; i++)
char currentChar = address[i];
if (currentChar == ' ' || currentChar == ',')
if (currentLength + 1 <= 40)
currentLine.Append(currentChar);
addressLines.Add(currentLine.ToString().Trim());
currentLine.Append(currentChar);
string token = tokens[0];
if (currentLength + token.Length <= 40)
currentLine.Append(token);
currentLength += token.Length;
addressLines.Add(currentLine.ToString().Trim());
currentLine.Append(token);
currentLength = token.Length;
if (addressLines.Count == 4)
if (currentLine.Length > 0 && addressLines.Count < 4)
addressLines.Add(currentLine.ToString().Trim());
while (addressLines.Count < 4)
return addressLines.ToArray();