que modificó la versión de Jim H tal que soporta algunos casos especiales. Por ejemplo, el caso cuando la oración no contiene ningún carácter de espacio en blanco; También noté que hay un problema cuando una línea tiene un espacio en la última posición; luego, el espacio se agrega al final y terminas con un personaje demasiado.
Aquí está mi versión por si acaso a alguien le interesa:
public static List<string> WordWrap(string input, int maxCharacters)
{
List<string> lines = new List<string>();
if (!input.Contains(" "))
{
int start = 0;
while (start < input.Length)
{
lines.Add(input.Substring(start, Math.Min(maxCharacters, input.Length - start)));
start += maxCharacters;
}
}
else
{
string[] words = input.Split(' ');
string line = "";
foreach (string word in words)
{
if ((line + word).Length > maxCharacters)
{
lines.Add(line.Trim());
line = "";
}
line += string.Format("{0} ", word);
}
if (line.Length > 0)
{
lines.Add(line.Trim());
}
}
return lines;
}
¿Qué has probado? ¿Qué salió mal? –
Supongo que no quieres dividir las palabras? –
@ L.B Intenté leer la longitud de la cuerda y dividirla si excede el ancho de la caja, pero eso me obligaría a dividir las palabras. Y simplemente no parecía funcionar tan bien. –