2016-05-17 13 views
3

Ich habe ein Problem mit meiner Abfrage. Ich muss durch Variablen suchen und wenn es . in einer Zeichenfolge gibt, muss ich dieses spezifische Zeichen zu _ ersetzen. Ich kann leere Stellen und - ersetzen, aber ich habe ein Problem, einen Punkt zu ersetzen.SPARQL ersetzen "." zu "_"

BIND(replace(?input,".","_") AS ?output) . 

Ich habe auch versucht, /. verwenden, //., \., \\., im Grunde nichts anderes als das Ergebnis ist das gleiche.

Lexical error. Encountered: "<" <40>, after: "replace" 

Vielen Dank im Voraus.

Antwort

5

Entfliehen Sie dem Punkt mit \\.. Sie könnten auch mit STR bespannen konvertieren möchten:

BIND(REPLACE(STR(?input),"\\.","_") AS ?output) .

Sie können auch alle Zeichen mit derselben ersetzen ersetzen (hier müssen Sie den Punkt nicht entgehen):

BIND(REPLACE(STR(?input),"[. -]","_") AS ?output) .

REPLACE nimmt einen regulären Ausdruck als zweites Argument, deshalb müssen Sie den Punkt in der ersten entkommen. In der zweiten wird ein Escape nicht benötigt, da der Punkt innerhalb einer Zeichenklasse liegt.