Gezien deze tekenreeks:
http://s.opencalais.com/1/pred/BusinessRelationType
Ik wil het laatste deel ervan krijgen: “BusinessRelationType”
Ik heb erover nagedacht om de hele string om te draaien en dan op zoek te gaan naar de eerste “/”, neem alles links daarvan en draai dat om. Ik hoop echter dat er een betere/kortere methode is. Gedachten?
Bedankt, Paul
Antwoord 1, autoriteit 100%
oneliner met Linq:
var lastPart = text.Split('/').Last();
of als er lege strings in staan (plus een null-optie):
var lastPart = text.Split('/').Where(x => !string.IsNullOrWhiteSpace(x)).LastOrDefault();
Antwoord 2, autoriteit 77%
Telkens wanneer ik merk dat ik code schrijf zoals LastIndexOf("/")
, krijg ik het gevoel dat ik waarschijnlijk iets doe dat onveilig is, en er is waarschijnlijk al een betere methode beschikbaar.
p>
Omdat u met een URI werkt, raad ik u aan de klasse System.Uri
te gebruiken. Dit biedt u validatie en veilige, gemakkelijke toegang tot elk deel van de URI.
Uri uri = new Uri("http://s.opencalais.com/1/pred/BusinessRelationType");
string lastSegment = uri.Segments.Last();
Antwoord 3, autoriteit 32%
U kunt string.LastIndexOf
.
int position = s.LastIndexOf('/');
if (position > -1)
s = s.Substring(position + 1);
Een andere optie is om een Uri
te gebruiken, als dat is wat je nodig hebt. Dit heeft als voordeel dat het andere delen van de uri kan ontleden en goed kan omgaan met de queryreeks, bijvoorbeeld: BusinessRelationType?q=hello world
Uri uri = new Uri(s);
string leaf = uri.Segments.Last();
Antwoord 4, autoriteit 13%
U kunt string.LastIndexOf
om de laatste / te vinden en vervolgens Substring
om alles erna te krijgen:
int index = text.LastIndexOf('/');
string rhs = text.Substring(index + 1);
Merk op dat als LastIndexOf
-1 retourneert als de waarde niet wordt gevonden, de tweede regel de hele tekenreeks retourneert als er geen / in de tekst staat.
Antwoord 5, autoriteit 7%
Hier is een vrij beknopte manier om dit te doen:
str.Substring(str.LastIndexOf("/")+1);
Antwoord 6, autoriteit 2%
if (!string.IsNullOrEmpty(url))
return url.Substring(url.LastIndexOf('/') + 1);
return null;
Antwoord 7, autoriteit 2%
Een kleine tip voor dwaze of onoplettende mensen (of iedereen die onlangs de koffie heeft opgegeven en dwaas, onoplettend, humeurig is… zoals ikzelf) – Windows-bestandspaden gebruiken een '\'
…alle voorbeelden hier gebruiken daarentegen een '/'
.
Gebruik dus een '\\'
om het einde van een Windows-bestandspad te krijgen! 🙂
De oplossingen hier zijn perfect en compleet, maar misschien kan dit voorkomen dat een andere arme ziel een uur verspilt zoals ik net deed!
Antwoord 8, autoriteit 2%
Het geaccepteerde antwoord kan ongewenste resultaten opleveren (lege tekenreeks) als de url eindigt op /
Om dit te voorkomen kunt u het volgende gebruiken:
string lastPart = text.TrimEnd('/').Split('/').Last();
Antwoord 9
U kunt ook de reguliere expressie /([^/]*?)$
gebruiken om een overeenkomst te vinden
Antwoord 10
Path.GetFileName
beschouwt / en \ als scheidingstekens.
Path.GetFileName ("http://s.opencalais.com/1/pred/BusinessRelationType") =
"BusinessRelationType"
Antwoord 11
Voor tekenreeks:
var stringUrl = "http://s.opencalais.com/1/pred/BusinessRelationType";
var lastPartOfUrl = stringUrl.Substring(stringUrl.LastIndexOf("/") + 1);
Als je string naar Uri converteert:// Hangt helemaal af van je behoefte.
var stringUrl = "http://s.opencalais.com/1/pred/BusinessRelationType";
var convertStringToUri = new Uri(stringUrl);
var lastPartOfUrl = convertStringToUri.PathAndQuery.Substring(convertStringToUri.AbsolutePath.LastIndexOf("/") + 1);
Uitvoer:
BusinessRelationType