pasar first convert array c# .net string character

first - string to char c#



¿Qué método en la clase String solo devuelve los primeros N caracteres? (9)

Me gustaría escribir un método de extensión para la clase String modo que si la cadena de entrada a es más larga que la longitud N proporcionada, solo se muestren los primeros N caracteres.

Así es como se ve:

public static string TruncateLongString(this string str, int maxLength) { if (str.Length <= maxLength) return str; else //return the first maxLength characters }

¿Qué método String.*() Puedo usar para obtener solo los primeros N caracteres de str ?


Cada vez que tengo que hacer manipulaciones de cadena en C #, echo de menos las buenas funciones anteriores de Left y Right de Visual Basic, que son mucho más simples de usar que la Substring .

Entonces, en la mayoría de mis proyectos de C #, creo métodos de extensión para ellos:

public static class StringExtensions { public static string Left(this string str, int length) { return str.Substring(0, Math.Min(length, str.Length)); } public static string Right(this string str, int length) { return str.Substring(str.Length - Math.Min(length, str.Length)); } }

Nota:
La parte Math.Min está ahí porque Substring arroja una ArgumentOutOfRangeException cuando la longitud de la cadena de entrada es menor que la longitud solicitada, como ya se mencionó en algunos comentarios en respuestas anteriores.

Uso:

string longString = "Long String"; // returns "Long"; string left1 = longString.Left(4); // returns "Long String"; string left2 = longString.Left(100);


Puede usar LINQ str.Take(n) o str.SubString(0, n) , donde este último lanzará una excepción ArgumentOutOfRangeException para n > str.Length .

IEnumerable<char> cuenta que la versión de LINQ devuelve un IEnumerable<char> , por lo que tendría que convertir IEnumerable<char> en string : new string(s.Take(n).ToArray()) .


Simplemente:

public static String Truncate(String input,int maxLength) { if(input.Length > maxLength) return input.Substring(0,maxLength); return input; }


si estamos hablando de validaciones también por qué no hemos verificado las entradas de cadenas nulas. ¿Alguna razón específica?

Creo que a continuación la ayuda, ya que IsNullOrEmpty es un método definido por el sistema y los operadores ternarios tienen una complejidad ciclomática = 1, mientras que if () {} else {} tiene el valor 2.

public static string Truncate(string input, int truncLength) { return (!String.IsNullOrEmpty(input) && input.Length >= truncLength) ? input.Substring(0, truncLength) : input; }


string.Substring (0, n); // 0 - índice de inicio y n - número de caracteres


public static string TruncateLongString(this string str, int maxLength) { if (string.IsNullOrEmpty(str)) return str; return str.Substring(0, Math.Min(str.Length, maxLength)); }


public static string TruncateLongString(this string str, int maxLength) { return str.Length <= maxLength ? str : str.Remove(maxLength); }


string truncatedToNLength = new string(s.Take(n).ToArray());

Esta solución tiene una pequeña ventaja en que si n es mayor que la longitud, todavía hace lo correcto.


substring(int startpos, int lenght);