ultimos - procurar caractere em string c#



Qual método na classe String retorna apenas os primeiros N caracteres? (7)

Eu adicionei isso no meu projeto só porque onde eu estou usando é uma grande chance de ser usado em loops, em um projeto hospedado on-line, portanto, eu não queria nenhum acidente se eu pudesse gerenciá-lo. O comprimento se ajusta a uma coluna que eu tenho. É c # 7

Apenas uma linha:

 public static string SubStringN(this string Message, int Len = 499) => !String.IsNullOrEmpty(Message) ? (Message.Length >= Len ? Message.Substring(0, Len) : Message) : "";

https://src-bin.com

Eu gostaria de escrever um método de extensão para a classe String para que, se a string de entrada for maior que o comprimento fornecido N , apenas os primeiros N caracteres sejam exibidos.

Aqui está como parece:

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

Que método String.*() Posso usar para obter apenas os primeiros N caracteres de str ?


Answer #1

Sempre que tenho que fazer manipulações de strings em C #, sinto falta das boas e antigas funções Left e Right do Visual Basic, que são muito mais simples de usar do que Substring .

Então, na maioria dos meus projetos em C #, eu crio métodos de extensão para eles:

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:
A parte Math.Min está lá porque o Substring lança um ArgumentOutOfRangeException quando o tamanho da string de entrada é menor que o tamanho solicitado, como já mencionado em alguns comentários nas respostas anteriores.

Uso:

string longString = "Long String";

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

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

Answer #2

Você pode usar o LINQ str.Take(n) ou str.SubString(0, n) , onde o último lançará uma exceção ArgumentOutOfRangeException para n > str.Length .

Tenha em mente que a versão LINQ retorna um IEnumerable<char> , então você teria que converter o IEnumerable<char> para string : new string(s.Take(n).ToArray()) .


Answer #3

se estamos falando de validações, também porque não verificamos entradas de string nulas. Alguma razão específica?

Eu acho que abaixo ajuda de maneira desde que IsNullOrEmpty é um método definido pelo sistema e operadores ternários têm complexidade ciclomática = 1 enquanto if () {} else {} possui valor 2.

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

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

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

Answer #6
substring(int startpos, int lenght);




character