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?

¿Fue útil?

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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top