2016-07-28 18 views
0

Ich verwende reines JavaScript und ich möchte das letzte Wort, wo meine aktuelle Caret-Position aus der Textzeichenfolge in einer Variablen wie in der folgenden Abbildung angezeigt wird, ich möchte das unknown Wort bekommen.Wie bekomme ich das letzte Wort von Caret Position in JavaScript?

enter image description here

In C#, habe ich den Code unten Konzept und seine dort gut funktionierend ...

private static char[] splitters = new char[] { ' ', '\n', '۔' }; 
int caretPosition = string.SelectionStart; 
string tempLastWord = string.Substring(0, caretPosition); 
string lastWord = tempLastWord.Substring(tempLastWord.LastIndexOfAny(splitters) + 1); 

Jetzt mag ich, wie unten das gleiche in der reinen JavaScript tun ...

var splitters = [ ' ', '\n', '۔' ]; 
var caretPosition = document.getElementById(Desired_ID).value.slice(0, document.getElementById(Desired_ID).selectionStart).length; 
var tempLastWord = document.getElementById(Desired_ID).value.substring(0, caretPosition); 
var lastWord = tempLastWord.substring(tempLastWord.lastIndexOf(splitters) + 1); 

Aber mein JavaScript-Code funktioniert nicht perfekt. Kann mir jemand helfen...???

+0

Sie fehlen eine abschließende Parenthese in der letzten Zeile: 'tempLastWord.lastIndexOf (Splitter) + 1' – LiborV

+0

Außerdem bin ich nicht sicher, lastIndexOf in javaScript kann ein Array als Parameter nehmen. Sie müssen es möglicherweise für jedes Trennzeichen separat aufrufen und dann das maximale Ergebnis auswählen. – LiborV

+0

@LiborV, Danke für den kleinen Fehler eigentlich wurde es hier verpasst. Und ja, JavaScript enthält nur 'string.lastIndexOf (searchvalue, start)' akzeptiert nur kein Array, deshalb fragt nach irgendeiner Alternative ... –

Antwort

1
var lastWord = tempLastWord.substring(tempLastWord.lastIndexOf('\n') + 1); 
lastWord = lastWord.substring(lastWord.lastIndexOf(' ') + 1); 
lastWord = lastWord.substring(lastWord.lastIndexOf('?') + 1); 

Das funktioniert.

+0

Danke für deinen einfachen Trick. Es funktioniert zumindest für meinen Testzweck ... –

0

var letzteWort = tempLastWordString (tempLastWord.lastIndexOf (Splitter + 1));

+0

In JavaScript ist die Funktion 'string.lastIndexOf (searchvalue, start)' und seine nicht akzeptiere alle Arrays ... –