Quale sarebbe il modo migliore e più idiomatico per spezzare una stringa in due al posto dell'ultimo punto? Separando sostanzialmente l'estensione dal resto di un percorso in un percorso file o URL. Finora quello che sto facendo è Split (".") E poi String.Join (".") Di tutto tranne l'ultima parte. Sembra usare un bazooka per uccidere le mosche.Il modo migliore per spezzare una stringa sull'ultimo punto su C#
risposta
Se si desidera prestazioni, qualcosa di simile a:
string s = "a.b.c.d";
int i = s.LastIndexOf('.');
string lhs = i < 0 ? s : s.Substring(0,i),
rhs = i < 0 ? "" : s.Substring(i+1);
Si potrebbe utilizzare Path.GetFilenameWithoutExtension()
o se questo non funziona per voi:
int idx = filename.LastIndexOf('.');
if (idx >= 0)
filename = filename.Substring(0,idx);
metodo La stringa LastIndexOf forse di qualche utilità per voi qui.
Ma gli operatori Path o FileInfo saranno più adatti per operazioni basate su nome file.
Penso che quello che stai veramente cercando è Path.GetFileNameWithoutExtension Method (System.IO) ma solo per il gusto di farlo:
string input = "foo.bar.foobar";
int lastDotPosition = input.LastIndexOf('.');
if (lastDotPosition == -1)
{
Console.WriteLine("No dot found");
}
else if (lastDotPosition == input.Length - 1)
{
Console.WriteLine("Last dot found at the very end");
}
else
{
string firstPart = input.Substring(0, lastDotPosition);
string lastPart = input.Substring(lastDotPosition + 1);
Console.WriteLine(firstPart);
Console.WriteLine(lastPart);
}
per ottenere il percorso senza l'estensione, utilizzare
System.IO.Path.GetFileNameWithoutExtension(fileName)
e per ottenere il extenstion (compreso il punto), utilizzare
Path.GetExtension(fileName)
EDIT:
0.123.Purtroppo GetFileNameWithoutExtension strisce fuori dal percorso che porta, così invece si può usare:
if (path == null)
{
return null;
}
int length = path.LastIndexOf('.');
if (length == -1)
{
return path;
}
return path.Substring(0, length);
Funziona anche con gli URL – jmservera
Path.GetExtension()
dovrebbe aiutare.
Cosa succede ad usare il metodo LastIndexOf che restituisce l'ultima trovata posizione di un carattere. Quindi puoi utilizzare la sottostringa per estrarre ciò che desideri.
String.LastIndexOf restituisce la posizione del punto se mai esiste nella stringa. È quindi possibile utilizzare String.Substring per dividere la stringa.
È possibile utilizzare il metodo di stringa
LastIndexOf e sottostringa per compire il compito.
- 1. Il modo migliore per spezzare le stringhe lunghe nel codice sorgente C#
- 2. Il modo migliore per tagliare gli spazi in una stringa
- 3. Il modo migliore per analizzare una stringa di query URL
- 4. Il modo migliore per definire una classe immutabile nell'obiettivo C
- 5. Qual è il modo migliore per impaginare una classe C#?
- 6. C# in VS2005: qual è il modo migliore per verificare se una stringa è vuota?
- 7. In C#, qual è il modo migliore per analizzare questo valore da una stringa?
- 8. Rimuovere carattere punto da una stringa C#
- 9. Stringa maiuscola - modo migliore
- 10. Qual è il modo migliore per comprimere le righe di una SELECT in una stringa?
- 11. Qual è il modo migliore per rappresentare il puntatore come stringa in C++?
- 12. modo migliore per invertire caso di stringa
- 13. Il modo migliore per interrogare un dizionario in C#
- 14. Quale modo migliore per concatenare una stringa in python?
- 15. Il modo migliore per posizionare l'immagine nello stesso punto su tutti i dispositivi?
- 16. Il modo più veloce per invertire una stringa in C
- 17. il modo migliore per convertire la raccolta in stringa
- 18. il modo migliore per creare/dividere la stringa sui tag
- 19. Qual è il modo migliore per ottenere una stringa formattata per rappresentare l'offset UTC?
- 20. Qual è il modo migliore per dividere una stringa per ottenere tutte le sottostringhe da Ruby?
- 21. Il modo migliore per impostare un programma modulare in C#
- 22. Il modo migliore per portare il gioco C++ sul web
- 23. Il modo migliore per convertire il dizionario <stringa, stringa> in una rappresentazione di stringa aggregata singola?
- 24. Qual è il modo migliore per convertire enum in stringa?
- 25. Il modo migliore per comprimere la stringa in PHP
- 26. Il modo migliore per concatenare Elenco di oggetti stringa?
- 27. Qual è il modo migliore per analizzare questo in C++?
- 28. Il modo migliore per ottenere una stringa di query da un URL in python?
- 29. Il modo migliore per scorrere su più array?
- 30. Qual è il modo migliore per registrare eccezioni a una stringa
Funzionerà su pezzi di URL (utilizzando/invece di \\)? E restituirà anche le "cartelle"? Path.GetFilename() restituisce solo il nome del file, senza directory, AFAIK. – Pablo
Se l'OP avesse chiesto solo i percorsi dei file, questo sarebbe un +1. Ma i documenti System.IO.Path non menzionano il supporto per gli URL. – OregonGhost
Corretto, ma potrebbe aver funzionato per te se il nome file non includeva un percorso. –