2016-06-08 14 views
2

Voll Zeichenfolge zu finden:Versuch IndexOf ein Apostroph

PDFReference =

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("InvestorL 
    ibrary_ILTocUC$LandingPanel$ildetail$lbNext", "", false, "", "/AO/Main.aspx?did 
    = [email protected]!nb2016!n160550603", false, true)) 

Aus dem oben I [email protected]!nb2016!n160550603

hier also nur erfassen wollen, ist, was ich versuche:

$PDFDid = $PDFReference.Substring($PDFReference.IndexOf('?did = ') + 7, ($PDFReference.IndexOf('?did = ') + 7) - ($PDFReference.IndexOf("`""))) 

Mein Problem ist mit der $PDFReference.IndexOf(" "") `wie dies scheint zu sein sauberste Weg, um die vollständige Zeichenfolge zu erfassen, aber ich erhalte eine Fehlermeldung

Exception calling "Substring" with "2" argument(s): "Index and length must refer to a location within the 
string. 
Parameter name: length" 

Irgendwelche Ideen, wie IndexOf einen " Charakter durchführen? Ich habe versucht, ", " und " zu verwenden, aber keiner dieser Codierungen funktioniert auch. Es wird das Zitat nicht erkennen.

Antwort

2

Sie bereits die IndexOf richtig machen, obwohl ich .indexOf('"') verwenden würde. Der Fehler beruht auf der Substring. Allerdings würde ich gehen nicht auf diese Weise ...


Sie könnten einfach die Zeichenfolge mit einem einfachen regulären Ausdruck erfassen:

\?did\s+=\s+([^"]*) 

Regular expression visualization

Powershell:

$PDFDid = [regex]::Match($PDFReference , '\?did\s+=\s+([^"]*)').Groups[1].Value 
+0

Erstaunlich. Genau das, was ich brauchte. Ich werde jetzt versuchen, das zu analysieren, um sicherzustellen, dass ich es vollständig verstehe. Vielen Dank! – Quanda

+0

Ich habe meine Antwort bearbeitet und einige Informationen zu Ihrem ursprünglichen Problem hinzugefügt. Regex passt hier jedoch perfekt, da Sie eine Zeichenkette aufnehmen wollen, bei der Sie sonst 'indexof' und' substring' verwenden müssen, was IMHO viel schwerer zu lesen ist. –

+1

Weitere Informationen zu diesem Regex finden Sie hier: https://regex101.com/r/iN9hR2/1 –