2016-08-22 13 views
0

Ich versuche, den Benutzernamen von einer JSON-Eigenschaft zu erhalten, die ich von Sharepoints restful API zurückgegeben habe.Nur den letzten Teil einer Zeichenkette extrahieren

Die Eigenschaft/string I erhalten: "i:0#.w|xyz\tzzjjaa"

Was ich will: "xyz\tzzjjaa"

Ich habe versucht: "i:0#.w|xyz\tzzjjaa".replace("\\","\\\\"), die zurückgibt: "i:0#.w|corproot tzzjjaa"

Warum ist dies der Fall? (Ist der umgekehrte Schrägstrich Art der Flucht des "t" in der Zeichenfolge?) Wie kann ich es beheben, um nur "xyz\tzzjjaa" zu bekommen?

Vielen Dank. :)

+0

Das hat nichts mit [tag: json] oder [tag: sharepoint] zu tun. –

+0

'" i: 0 # .w | xyz \ tzzzjjaa ".replace (" i: 0 # .w | ", '')'? –

+4

Split auf dem Rohr? – Shilly

Antwort

-1

Sind Sie sicher, dass es "tzzjjaa" sein sollte? \t in einem String-Literal in Anführungszeichen (oder in der JSON-Zeichenfolge) ist nicht \ gefolgt von t, es stellt stattdessen ein TAB (ASCII Code # 09) Zeichen!

+0

Natürlich, warum sollte ein Benutzername Tabbed sein? – sandrooco

+0

@Sandrooco, wenn es von t gefolgt wird, dann sollte es als "i: 0 # .w | xyz \\ tzzzjjaa" oder mit "String.raw" wie oben vorgeschlagen codiert werden. Anstatt die Zeichenfolge aufzuteilen, können Sie die Funktion replace wie folgt verwenden: '.replace (/^.+ \ | /," ")' – some1

2
var str = String.raw`i:0#.w|xyz\tzzjjaa`; 
console.log(str.split("|")[1]); 

Angenommen, Sie die Backslash sehen a really good answer by T.J. Crowder zur Verwendung der String.raw Funktion behalten möchten, teilen Sie dann die Zeichenfolge auf dem Rohr und nehmen den zweiten Teil des resultierenden Arrays.

Demo:https://jsfiddle.net/snjfveo6/

Wenn Sie nicht den umgekehrten Schrägstrich möchten Sie den String.raw Teil entfernen und lassen Sie die Zeichenfolge zu spalten.

+0

Und die Unterstützung dafür ist in Browsern sehr begrenzt und sieht so aus, als ob Sie getippt hätten es ist falsch. – epascarello

+0

Sieht gut aus, getestet in Chrom. Siehe Dokumentation: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/raw - es wird nur in Chrome und Firefox unterstützt –

+1

Ja, ich sollte beachten, dass dies ein 2015 Standard @epascarello ist gut darauf hingewiesen! –

0
var str = "i:0#.w|xyz\tzzjjaa".replace("i:0#.w|", ""); 
alert(JSON.stringify(str)); 

Demo

+0

funktioniert nicht, fehlt die t. – sandrooco

+0

überprüfen Sie jetzt. Antwort bearbeitet –

+0

Demo hinzugefügt @Sandrooco –

-1

\t in einem JS-String ist mit einem Tab-Zeichen entkommen.

Ihre beste Lösung, wie ich es sehe, ist es auf der Serverseite zu entkommen.

In Ihrem Fall müssen Sie ein kleines Server-Skript schreiben, das Ihre verwendete API aufruft und alles konvertiert/entkernt, um für Ihren JS bereit zu sein. Und dein JS ruft dieses kleine Server-Skript auf.

Wenn Ihr Benutzername ist sicher nie mit einem x nach dem umgekehrten Schrägstrich beginnen, dann:

Entweder gehen mit JNewtons's answer und verwenden Sie die String.raw -Methode, oder für eine breitere Unterstützung verwenden, um die Stringify -Methode von Sathvik Cheela.

Aber wenn es eine Chance ist, dass es mit einer x nach dem umgekehrten Schrägstrich beginnen könnte, haben Sie derzeit keine Möglichkeit, dies in JavaScript im Frontend zu lösen - nur in einen Backend.

+0

Warum können die Leute die Frage und die Kommentare nicht lesen? Ich habe gesagt, dass ich das Server-Zeug nicht ändern kann, weil es SP ist. – sandrooco

+0

Ich spreche nicht über die bereits bestehende API - aber Sie könnten ein kleines PHP-Snippet als Broker schreiben. Natürlich gehe ich davon aus, dass Sie auf dem Server arbeiten dürfen. –

+0

Es ist sharepoint bro. – sandrooco

Verwandte Themen