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