Como obter os cinco primeiros caracteres de uma String
133
Eu li esta pergunta para obter o primeiro caractere da string. Existe uma maneira de obter o primeiro número n de caracteres de uma seqüência de caracteres em c #?
A pergunta anterior está perguntando sobre char** s e você está perguntando sobre ** caracteres s. Eles não são a mesma coisa. 𣊾e 𣇞há dois caracteres que eu precisava usar ontem, que falharam no software escrito em C # que eu estava usando porque o programador não sabia a diferença entre um chare um caractere. Não caia nessa armadilha!
string val = nova string (yourStringVariable.Take (6) .ToArray ()); mas Substring irá erro se o comprimento de yourStringVariable for menor que 5
Moji
1
IsNullOrWhiteSpaceestá errado aqui. Considere uma string com 10 espaços em branco - seu código retornará todos os 10. Use IsNullOrEmpty. (Não é bom para combinar IsNullOrWhiteSpacecom qualquer outro teste; Em vez de teste para nulo + vazio, então Trimse isso for especificado comportamento, em seguida, fazer o que testes / operações são necessárias.)
ToolmakerSteve
1
Você pode salvar uma chamada para ToArray () usando String.Concat () assim: string firstFivChar = String.Concat (yourStringVariable.Take (5));
A substring inicia em uma posição de caractere especificada e tem um comprimento especificado. Este método não modifica o valor da instância atual. Em vez disso, ele retorna uma nova seqüência de caracteres com caracteres de comprimento iniciando na posição startIndex na seqüência atual,
MSDN
E se a cadeia de origem tiver menos de cinco caracteres? Você receberá uma exceção usando o método acima. Podemos colocar a condição para verificar se o número de caracteres na string é superior a 5 e, em seguida, obter os cinco primeiros através da Substring. Nota: Eu atribuí a string de origem à variável firstFiveChar. O firstFiveChar não muda se os caracteres tiverem menos de 5, portanto, outra parte não é necessária.
Ninguém mencionou como fazer verificações adequadas ao usar Substring() , então eu queria contribuir com isso.
Se você não quiser usar Linqe seguir adiante Substring(), certifique-se de que sua string seja maior que o segundo parâmetro (comprimento) deSubstring() função.
Digamos que você precise dos 5 primeiros caracteres. Você deve obtê-los com a verificação adequada, assim:
string title ="love"// 15 charactersvar firstFiveChars = title.Length<=5? title : title.Substring(0,5);// firstFiveChars: "love" (4 characters)
Sem essa verificação, Substring() função lançaria uma exceção porque iteraria através de letras que não estão lá.
Isso me ajudou muito, mas você poderia explicar o que exatamente está fazendo nessa linha?
jimbob
Gostaria de verificar alguns exemplos sobre substring. Leva parâmetros para índices. O índice inicial é 0. Se você escrever algo maior (ou menor, nesse caso) que o último índice de qualquer matriz, receberá uma exceção fora do índice. Essa verificação, no exemplo, é para evitar essa exceção.
Ilter 28/08/19
Hahhahaha! :) Foi uma pergunta que eu respondi. Eu deveria ter deixado essa pergunta sem resposta? :)
ILTER
18
O problema .Substring(,)é que você precisa ter certeza de que a sequência fornecida tenha pelo menos o comprimento do número solicitado de caracteres, caso contrário, uma ArgumentOutOfRangeExceptionserá lançada.
Solução 1 (usando 'Substring'):
var firstFive = stringValue !=null?
stringValue.Substring(0, stringValue.Length>=5?5: stringValue.Length):null;
A desvantagem de usar .Substring( é que você precisará verificar o comprimento da string especificada.
Solução 2 (usando 'Take'):
var firstFive = stringValue !=null?string.Join("", stringValue.Take(5)):null;
Usar 'Take' impedirá que você precise verificar o comprimento da string especificada.
Internamente, é o mesmo que "this.Substring (0, 5)", portanto, é necessário garantir que a string tenha o comprimento adequado.
PersyJack
No caso em que você deseja os primeiros n caracteres, isso funcionará apenas se você souber o comprimento da sequência. Se o comprimento puder mudar, isso nem sempre funcionará. Eu sei que é provavelmente óbvio para a maioria, mas apenas mencioná-lo para qualquer um que passa por ...
user1289451
10
Anexe cinco caracteres de espaço em branco, depois corte os cinco primeiros e apare o resultado. O número de espaços anexados deve corresponder ao número que você está cortando. Certifique-se de incluir os parênteses antes .Substring(0,X)ou não anexará nada.
caramba eu ia postar isso !! votado. (é 2019, por que não pode haver um método em string que faça o que Mid $ fez em 1985? Para aqueles que dizem 'você não deve fazer isso' OK, você vem escrever meu código para mim ... você terá que Faça isso ...)
Abaixo está um método de extensão que verifica se uma string é maior que o necessário e encurta a string para a quantidade máxima definida de caracteres e acrescenta '...'.
publicstaticclassStringExtensions{publicstaticstringEllipsis(thisstring s,int charsToDisplay){if(!string.IsNullOrWhiteSpace(s))return s.Length<= charsToDisplay ? s :newstring(s.Take(charsToDisplay).ToArray())+"...";returnString.Empty;}}
char
** s e você está perguntando sobre ** caracteres s. Eles não são a mesma coisa.𣊾
e𣇞
há dois caracteres que eu precisava usar ontem, que falharam no software escrito em C # que eu estava usando porque o programador não sabia a diferença entre umchar
e um caractere. Não caia nessa armadilha!Respostas:
Você pode usar Enumerable .
Ou você pode usar String.Substring .
Lembre-se de que isso
String.Substring
poderia gerar uma exceção no caso de um comprimento de string menor que os caracteres necessários.Se você deseja obter o resultado de volta na string, pode usar:
Usando String Constructor e LINQ
Take
A vantagem com a abordagem não está verificando o comprimento antes da mão.
String.Substring
com verificação de errogostar:
fonte
IsNullOrWhiteSpace
está errado aqui. Considere uma string com 10 espaços em branco - seu código retornará todos os 10. UseIsNullOrEmpty
. (Não é bom para combinarIsNullOrWhiteSpace
com qualquer outro teste; Em vez de teste para nulo + vazio, entãoTrim
se isso for especificado comportamento, em seguida, fazer o que testes / operações são necessárias.)Tente por favor:
Verifique C # Substring , String.Substring Método
fonte
Você pode usar Substring (int startIndex, int length)
E se a cadeia de origem tiver menos de cinco caracteres? Você receberá uma exceção usando o método acima. Podemos colocar a condição para verificar se o número de caracteres na string é superior a 5 e, em seguida, obter os cinco primeiros através da Substring. Nota: Eu atribuí a string de origem à variável firstFiveChar. O firstFiveChar não muda se os caracteres tiverem menos de 5, portanto, outra parte não é necessária.
fonte
Ninguém mencionou como fazer verificações adequadas ao usar
Substring()
, então eu queria contribuir com isso.Se você não quiser usar
Linq
e seguir adianteSubstring()
, certifique-se de que sua string seja maior que o segundo parâmetro (comprimento) deSubstring()
função.Digamos que você precise dos 5 primeiros caracteres. Você deve obtê-los com a verificação adequada, assim:
Sem essa verificação,
Substring()
função lançaria uma exceção porque iteraria através de letras que não estão lá.Eu acho que você entendeu a ideia ...
fonte
O problema
.Substring(,)
é que você precisa ter certeza de que a sequência fornecida tenha pelo menos o comprimento do número solicitado de caracteres, caso contrário, umaArgumentOutOfRangeException
será lançada.Solução 1 (usando 'Substring'):
A desvantagem de usar
.Substring(
é que você precisará verificar o comprimento da string especificada.Solução 2 (usando 'Take'):
Usar 'Take' impedirá que você precise verificar o comprimento da string especificada.
fonte
Use a função PadRight para evitar que a string seja muito curta, pegue o que você precisa e apare os espaços do final em uma única instrução.
fonte
Não sei por que alguém mencionou isso. Mas é a maneira mais curta e simples de conseguir isso.
n
- número de caracteres que você precisaExemplo
fonte
Anexe cinco caracteres de espaço em branco, depois corte os cinco primeiros e apare o resultado. O número de espaços anexados deve corresponder ao número que você está cortando. Certifique-se de incluir os parênteses antes
.Substring(0,X)
ou não anexará nada.Com esta técnica, você não precisará se preocupar com o
ArgumentOutOfRangeException
mencionado em outras respostas.fonte
fonte
Apenas um aviso, há uma nova maneira de fazer isso no C # 8.0: operadores de intervalo
Docs da Microsoft
Ou como eu gosto de chamá-los, fatias de pandas.
À moda antiga:
Nova maneira:
Que, à primeira vista, parece uma troca muito ruim de legibilidade para código mais curto, mas o novo recurso oferece
coisas legais como esta:
var fatia1 = lista [2 .. ^ 3]; // lista [Range.Create (2, Index.CreateFromEnd (3))]
var fatia2 = lista [.. ^ 3]; // lista [Range.ToEnd (Index.CreateFromEnd (3))]
var fatia3 = lista [2 ..]; // lista [Range.FromStart (2)]
var fatia4 = lista [..]; // lista [Range.All]
fonte
Para obter o primeiro número n de caracteres de uma string em C #
fonte
Abaixo está um método de extensão que verifica se uma string é maior que o necessário e encurta a string para a quantidade máxima definida de caracteres e acrescenta '...'.
fonte
No C # 8.0, você pode obter os cinco primeiros caracteres de uma string assim
Aqui estão mais algumas informações sobre índices e intervalos
fonte
Eu uso:
ou alternativa, se você quiser verificar também o espaço em branco (em vez de apenas nulo):
fonte
Ou você pode usar String.ToCharArray () .
Toma
int startindex
e eint length
como parâmetros e retorna umchar[]
Você ainda precisa garantir que a string tenha o comprimento adequado; caso contrário, ela lançará um
ArgumentOutOfRangeException
fonte
Tente este código quando str for menor que 5.
fonte
Se quisermos apenas os 5 primeiros caracteres de qualquer campo, isso poderá ser alcançado pelo Atributo Esquerdo
fonte
Experimente o código abaixo
fonte
Eu tentei as respostas acima e o melhor que eu acho que é esse
Neste eu poderia obter a primeira letra da string
fonte