Pregunta
Tengo una cadena = " google.com 220 USD 3d 19h " ;.
Quiero extraer solo el " .com " parte .......
¿Cuál es la forma más fácil de manipular el método de cadena dividida para obtener este resultado?
Solución
Supongo que quiere extraer el nombre de dominio o la TLD parte del cuerda. 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
Otros consejos
Idea alternativa
string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);
bueno, si puedes asumir que el espacio es separador, es tan fácil como
cadena llena
char [] delimiterChars = {''}; // usado para que puedas especificar más delimitaciones cadena [] palabras = full.Split (delimiterChars, 1); // divide solo una palabra con espacio
string result = words [0] // así es como puedes acceder a él
Si por extracto te refieres a eliminar, puedes usar el método Reemplazar
var result = str.Replace (" .com " ;, " ");
Sé que preguntaste sobre el uso del método Split, pero no estoy seguro de que sea la mejor ruta. Dividir una cadena asignará al menos 5 cadenas nuevas que se ignorarán inmediatamente y luego tendrán que esperar hasta que se libere el GC. Es mejor que solo use la indexación en la cadena y extraiga justo lo que necesita.
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 );
Suponiendo que desea el dominio de nivel superior:
string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);
Salida:
.com
Esto tiene en cuenta los subdominios.
usar Regex sería la mejor opción pero si quieres usar Split 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));
No puedo pensar en una razón en el mundo en la que quiera usar String.Split
para este propósito. Este problema se resuelve mejor con una expresión regular.
Aquí hay 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);
}
}