Tengo una cadena = "google.com 220 USD 3d 19h".C# string split
Quiero extraer sólo la parte ".com" .......
cuál es la forma más fácil de manipular el método de cadena de división para obtener este resultado?
Tengo una cadena = "google.com 220 USD 3d 19h".C# string split
Quiero extraer sólo la parte ".com" .......
cuál es la forma más fácil de manipular el método de cadena de división para obtener este resultado?
Supongo que o bien desea extraer el nombre de dominio o TLD parte de la cadena. Esto debería hacer el trabajo:
var str = "google.com 220 USD 3d 19h";
var domain = str.Split(' ')[0]; // google.com
var tld = domain.Substring(domain.IndexOf('.')) // .com
No estoy seguro de por qué se vota, el código tld es incorrecto. Supongo que querías decir: var tld = domain.Substring (domain.IndexOf ('.')); // .com – RedFilter
Supongo que var tld = domain.Substring (domain.IndexOf ('.')) se entiende (editado, espero que no te importe Noldorin)? –
@OrbMan: ¡Eres un juez terriblemente duro! Claramente fue solo un error tipográfico, que podrías haber arreglado tú mismo. Supongo que el voto negativo vino de usted. : P – Noldorin
bien si se puede asumir que el espacio es separador su tan fácil como
cadena completa
char [] = {delimiterChars ''}; // usado para que pueda especificar más delims string [] words = full.Split (delimiterChars, 1); // divide sólo una palabra con el espacio
cadena resultado = palabras [0] // esto es cómo se puede acceder a él
Suponiendo que desea que el dominio de nivel superior:
string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);
de salida:
.com
Esto tiene en cuenta los subdominios.
idea alternativo
string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);
Esto solo funciona si el TLD es .com. Teniendo en cuenta que el objetivo es averiguar realmente qué es el tld, parece extraño. – Brian
@Brian: aunque estoy de acuerdo en que el código no es la solución correcta, selecciona un TLD de tres letras (como .net o .org). Sin embargo, perderá cualquier otro TLD (como .de o .info). –
Si por el extracto de te refieres a quitar, se puede utilizar el método Replace
var result = str.Replace ("" "com.");
utilizando expresiones regulares sería la mejor opción, pero si usted desea utilizar Dividir entonces
var str = "google.com 220 USD 3d 19h";
var str1 = str.Split(' ')[0];
var str2 = str1.Split('.')[0];
Console.WriteLine(str1.Replace(str2, string.Empty));
sé que pedirá sobre el uso del método de Split pero no estoy seguro de que es la mejor ruta. La división de una cadena asignará al menos 5 cadenas nuevas que se ignoran inmediatamente y luego tendrán que esperar hasta que se libere el GC. Es mejor que solo uses la indexación en la cadena y saques lo que necesitas.
string str = "google.com 220 USD 3d 19h";
int ix = str.IndexOf(' ');
int ix2 = str.IndexOf('.', 0, ix);
string tld = str.Substring(ix2, ix - ix2);
string domain = str.Substring(0, ix);
no puedo pensar en una razón en el mundo que se desea utilizar String.Split
para este propósito. Este problema se resuelve mejor con una expresión regular.
Aquí es un pequeño programa que muestra cómo hacerlo:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
String foo = "google.com 220 USD 3d 19h";
Regex regex = new Regex(@"(.com)", RegexOptions.IgnoreCase);
Match match = regex.Match(foo);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
}
}
Downvoters - ¿hay alguna razón por la cual esto fue downvoted (que no sea el hecho de que yo no use String.Split)? –
No he votado negativamente, pero su tono puede tener algo que ver con eso. El hecho de que no puedas pensar en una razón no significa que no haya una. –
Hmm, buen punto - Sueno como un idiota :) Gracias por señalar eso. –
cadena extraída = ".com" ;. Esa es la manera más fácil, y ni siquiera necesitas usar el string.split! :-) –
No hay suficiente detalle: si proporciona más ejemplos de cadenas y lo que necesita extraer, se puede idear una buena solución general. – Oded
Considera el uso de una expresión regular. –