Domanda

Ho una stringa = " google.com 220 USD 3d 19h " ;.

Voglio estrarre solo il " .com " parte .......

qual è il modo più semplice per manipolare il metodo della stringa divisa per ottenere questo risultato?

È stato utile?

Soluzione

Suppongo che tu voglia estrarre il nome di dominio o la TLD del stringa. Questo dovrebbe fare il lavoro:

var str = "google.com 220 USD 3d 19h";
var domain = str.Split(' ')[0];           // google.com
var tld = domain.Substring(domain.IndexOf('.')) // .com

Altri suggerimenti

Idea alternativa

string str = "google.com 220 USD 3d 19h";
string match = ".com";
string dotcomportion = str.Substring(str.IndexOf(match), match.Length);

bene, se puoi presumere che lo spazio sia separato, è facile come

stringa piena

char [] delimiterChars = {''}; // usato in modo da poter specificare più delim string [] words = full.Split (delimiterChars, 1); // divide solo una parola con spazio

string result = words [0] // ecco come puoi accedervi

Se per estratto si intende rimuovere, è possibile utilizzare il metodo Sostituisci

var result = str.Replace (" .com " ;, " ");

So che hai chiesto di usare il metodo Split ma non sono sicuro che sia la strada migliore. La divisione di una stringa assegnerà almeno 5 nuove stringhe che vengono immediatamente ignorate e quindi devono attendere fino al rilascio di GC. Stai meglio usando solo l'indicizzazione nella stringa e tirando fuori quello che ti serve.

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 );

Supponendo che desideri il dominio di primo livello:

string str = "google.com 220 USD 3d 19h";
string tld = str.Substring(str.LastIndexOf('.')).Split(' ')[0];
Console.WriteLine(tld);

Output:

.com

Questo tiene conto dei sottodomini.

usare Regex sarebbe l'opzione migliore ma se vuoi usare Split allora

  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));

Non riesco a pensare a una ragione al mondo per cui vorresti usare String.Split per questo scopo. Questo problema si risolve meglio con un'espressione regolare.

Ecco un piccolo programma che dimostra come farlo:

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);
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top