Ho stringa seguente:Come sottostringa tra due separatori in una posizione arbitraria
string source = "Test/Company/Business/Department/Logs.tvs/v1";
Il carattere /
è il separatore tra i vari elementi nella stringa. Ho bisogno di prendere gli ultimi due elementi della stringa. Ho il seguente codice per questo scopo. Funziona bene C'è un codice più veloce/più semplice per questo?
CODICE
static void Main()
{
string component = String.Empty;
string version = String.Empty;
string source = "Test/Company/Business/Department/Logs.tvs/v1";
if (!String.IsNullOrEmpty(source))
{
String[] partsOfSource = source.Split('/');
if (partsOfSource != null)
{
if (partsOfSource.Length > 2)
{
component = partsOfSource[partsOfSource.Length - 2];
}
if (partsOfSource.Length > 1)
{
version = partsOfSource[partsOfSource.Length - 1];
}
}
}
Console.WriteLine(component);
Console.WriteLine(version);
Console.Read();
}
E 'un peccato che si può' t fare in modo che il motore regex corrisponda "di destra" in casi come questo. – Rawling
@Rawling: concordato. Immagino che potresti invertire prima la stringa, ma probabilmente è anche meno efficiente. In realtà, mi chiedo se non sia possibile per un motore RegEx incorporare questo tipo di ottimizzazione quando un'espressione ha un '$' ma non '^'. –
... OK, oggi ho imparato che puoi fare qualcosa come 'Regex.Match (source," /(.*?)/(.*?)$ ", RegexOptions.RightToLeft)', o anche senza '$' in questo caso. – Rawling