Este código debería ayudarlo. Verificará la longitud de la cadena actual. Si es mayor que su maxLength (150) en este caso, comenzará en el carácter 150 y (ir hacia atrás) encontrará el primer carácter no de palabra (según lo describe el OP, esta es una secuencia de caracteres que no son de espacio)). Luego almacenará la cadena hasta ese carácter y comenzará de nuevo con la cadena restante, repitiendo hasta que terminemos con una subcadena que tenga menos de maxLength caracteres. Finalmente, únete a todos nuevamente en una cadena final.
string line = "This is a really long run-on sentence that should go for longer than 150 characters and will need to be split into two lines, but only at a word boundary.";
int maxLength = 150;
string delimiter = "\r\n";
List<string> lines = new List<string>();
// As long as we still have more than 'maxLength' characters, keep splitting
while (line.Length > maxLength)
{
// Starting at this character and going backwards, if the character
// is not part of a word or number, insert a newline here.
for (int charIndex = (maxLength); charIndex > 0; charIndex--)
{
if (char.IsWhiteSpace(line[charIndex]))
{
// Split the line after this character
// and continue on with the remainder
lines.Add(line.Substring(0, charIndex+1));
line = line.Substring(charIndex+1);
break;
}
}
}
lines.Add(line);
// Join the list back together with delimiter ("\r\n") between each line
string final = string.Join(delimiter , lines);
// Check the results
Console.WriteLine(final);
Nota: Si ejecuta este código en una aplicación de consola, es posible que desee cambiar "maxLength" a un número más reducido de manera que la consola no se ajusta a usted.
Nota: Este código no tiene en cuenta ningún carácter de tabulación. Si también se incluyen pestañas, su situación se vuelve un poco más complicada.
Actualización: Corregí un error donde las nuevas líneas comenzaban con un espacio.
expresión ¿Por qué regular? Si muestra la etiqueta C#, hágalo a través de las funciones de C#. –
¿Desea insertar saltos de línea para cada línea cada 150 caracteres? Ejemplo de entrada y salida (con un límite más corto) podría ayudar a visualizar lo que desea hacer. – Qtax
Bummer. La regla del salto de palabra es dolor: ¿cómo defines una palabra (mucho más complicada de lo que probablemente crees)? – Crisfole