Eu tenho usado o Split()
método para dividir strings, mas isso só parece funcionar se você estiver dividindo uma string por um caractere. Existe uma maneira de dividir um string
, com outra string sendo dividida por parâmetro?
Eu tentei converter o divisor em uma matriz de caracteres, sem sorte.
Em outras palavras, eu gostaria de dividir o string
:
THExxQUICKxxBROWNxxFOX
por xx
e retorne uma matriz com valores:
A RÁPIDA RAPOSA MARROM
Respostas:
Para dividir por uma sequência, você precisará usar a sobrecarga da matriz .
fonte
string.Split
.string[] Split(string pattern)
, qual é o uso mais natural em que pude pensar, mas ainda não existe. Eu escrevi C antes, então estou acostumado a matrizes de caracteres, mas ainda odeiochar[]
aparecer em um código C # porque, de repente, arrasta minha atenção do nível do fluxo para o nível de bytes. Alguém sabe por que os caras da biblioteca C # criaram o método Split assim? Se houver um bom motivo, provavelmente posso tentar apreciá-lo, apesar dos inconvenientes.data.Split("xx")
?Há uma sobrecarga de Split que recebe seqüências de caracteres.
Você pode usar qualquer um desses StringSplitOptions
Portanto, se a seqüência de caracteres for "THExxQUICKxxxxBROWNxxFOX",
StringSplitOptions.None
retornará uma entrada vazia na matriz para a parte "xxxx", enquantoStringSplitOptions.RemoveEmptyEntries
não será.fonte
é o jeito que eu faço normalmente.
Claro que você precisará de:
ou:
mas, novamente, eu preciso dessa biblioteca o tempo todo.
fonte
RegEx.Split
é um pouco mais cara do que uma simplesString.Split
por causa da sobrecarga da expressão regular.Regex.Escape
primeiro a sequência, isso escapará a qualquer metacaractere de expressão regular.Há uma sobrecarga de String.Split para isso:
fonte
Eu geralmente gosto de usar minha própria extensão para isso:
No entanto, isso levará a uma exceção, se a Microsoft decidir incluir essa sobrecarga de método em versões posteriores. Também é a provável razão pela qual a Microsoft não incluiu esse método nesse meio tempo: pelo menos uma empresa em que trabalhei, usou essa extensão em todos os seus projetos de C #.
Também pode ser possível definir condicionalmente o método em tempo de execução, se ele não existir.
fonte
params string[] splitter
como o segundo parâmetro e alterenew[] {splitter}
parasplitter
para suportar vários delimitadores.As respostas anteriores estão todas corretas. Vou um passo além e faço o C # funcionar para mim, definindo um método de extensão na String:
Dessa forma, eu posso chamá-lo em qualquer string da maneira simples que esperei ingenuamente na primeira vez que tentei fazer isso:
fonte
A partir do .NET Core 2.0, há uma substituição que aceita uma string.
Então agora você pode fazer
"THExxQUICKxxBROWNxxFOX".Split("xx")
.Consulte https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_
fonte
Basta escolher o caractere de substituição com cuidado (escolha um que provavelmente não esteja presente na string)!
fonte
|
já contiver o caractere, por esse motivo, acho que é perigoso usá-lo.Isso também é fácil:
fonte
"THExQUICK"
em que não quer que ele seja divididoA maneira mais fácil é usar
String.Replace
:Ou, mais simplesmente:
fonte
xx
estavam.