He estado usando el Split()
método para dividir cadenas, pero esto solo parece funcionar si está dividiendo una cadena por un carácter. ¿Hay alguna manera de dividir un string
, con otra cadena que es la división por parámetro?
Intenté convertir el divisor en una matriz de caracteres, sin suerte.
En otras palabras, me gustaría dividir el string
:
THExxQUICKxxBROWNxxFOX
por xx
y devuelve una matriz con valores:
EL VELOZ ZORRO MARRÓN
Respuestas:
Para dividir por una cadena, deberá usar la sobrecarga de la matriz de cadenas .
fuente
string.Split
.string[] Split(string pattern)
, que es el uso más natural que se me ocurre, pero aún no está allí. Escribí C antes, así que estoy acostumbrado a las matrices de caracteres, pero todavía odio verchar[]
aparecer un código C # porque de repente me llama la atención del nivel de transmisión al nivel de bytes. ¿Alguien sabe por qué los chicos de la biblioteca C # diseñaron el método Split de esta manera? Si hay una buena razón, probablemente pueda tratar de apreciarla a pesar de las molestias.data.Split("xx")
?Hay una sobrecarga de Split que toma cadenas.
Puede usar cualquiera de estas StringSplitOptions
Entonces, si la cadena es "THExxQUICKxxxxBROWNxxFOX",
StringSplitOptions.None
devolverá una entrada vacía en la matriz para la parte "xxxx" mientrasStringSplitOptions.RemoveEmptyEntries
que no lo hará.fuente
es la forma en que lo hago habitualmente.
Por supuesto que necesitarás:
o:
pero, de nuevo, necesito esa biblioteca todo el tiempo.
fuente
RegEx.Split
es bastante más costoso que simpleString.Split
debido a la sobrecarga de expresión regular.Regex.Escape
primero en la cadena, esto escapará a los metacaracteres regex.Hay una sobrecarga de String.Split para esto:
fuente
Generalmente me gusta usar mi propia extensión para eso:
Sin embargo, esto conducirá a una excepción, si Microsoft decide incluir esta sobrecarga de métodos en versiones posteriores. También es la razón probable por la que Microsoft no ha incluido este método mientras tanto: al menos una empresa para la que trabajé, utilizó esa extensión en todos sus proyectos de C #.
También es posible definir condicionalmente el método en tiempo de ejecución si no existe.
fuente
params string[] splitter
como segundo parámetro y cambienew[] {splitter}
asplitter
para admitir múltiples delimitadores.Las respuestas anteriores son todas correctas. Voy un paso más allá y hago que C # funcione para mí definiendo un método de extensión en String:
De esa manera puedo llamarlo en cualquier cadena de la manera simple que ingenuamente esperaba la primera vez que intenté lograr esto:
fuente
A partir de .NET Core 2.0, hay una anulación que toma una cadena.
Entonces ahora puedes hacerlo
"THExxQUICKxxBROWNxxFOX".Split("xx")
.Ver https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netcore-2.0#System_String_Split_System_String_System_StringSplitOptions_
fuente
¡Simplemente elija el carácter de reemplazo con cuidado (elija uno que probablemente no esté presente en la cadena)!
fuente
|
carácter? Por esta razón, creo que es peligroso de usar.Esto también es fácil:
fuente
"THExQUICK"
donde no queremos que seLa forma más fácil es usar
String.Replace
:O más simplemente:
fuente
xx
estaban las 's.