Размещение устаревших таблиц базы данных, разработанных специально для экранов мэйнфреймов IBM, которые они представляют, вызвало у меня сильное раздражение. Часто я нахожу необходимость разбить строку на несколько строк, чтобы соответствовать ширине столбца таблицы, а также пользователям, которые все еще просматривают данные с помощью эмуляторов терминала. Вот две функции, которые я написал для выполнения этой задачи, принимая строку и ширину линии в качестве параметров и возвращая перечисляемую строку. Как вы думаете, какая функция лучше и почему? И во что бы то ни стало поделитесь супер-легким-быстрым эффективным способом, который я полностью упустил из виду.
public string[] BreakStringIntoArray(string s, int lineWidth)
{
int lineCount = ((s.Length + lineWidth) - 1) / lineWidth;
string[] strArray = new string[lineCount];
for (int i = 0; i <= lineCount - 1; i++)
{
if (((i * lineWidth) + lineWidth) >= s.Length)
strArray[i] = s.Substring(i * lineWidth);
else
strArray[i] = s.Substring(i * lineWidth, lineWidth);
}
return strArray;
}
против
public List<string> BreakStringIntoList(string s, int lineWidth)
{
List<string> lines = new List<string>();
if (s.Length > lineWidth)
{
lines.Add(s.Substring(0, lineWidth));
lines.AddRange(this.BreakStringIntoList(s.Substring(lineWidth), lineWidth));
}
else
{
lines.Add(s);
}
return lines;
}
Например, передача ("Hello world", 5)
вернет 3 строки:
"Hello"
" worl"
"d"