2016-07-28 11 views
0

私は純粋なJavaScriptを使用していますが、現在のキャレットの位置が変数のテキスト文字列からの最後の単語を取得したい場合は、unknownという単語を取得します。 C#のでJavaScriptでカレットの位置から最後の単語を取得するには?

enter image description here

、私は以下のコードの概念を使用し、その完全にそこに働いて...

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); 

は今、私は以下のように純粋なJavaScriptで同じことをやりたい...

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); 

ただし、JavaScriptコードが完全に動作していません。誰も私を助けることができる... ???

+0

'tempLastWord.lastIndexOf(splitters)+1 ' – LiborV

+0

また、私はjavaScriptのlastIndexOfがパラメータとして配列をとることができないと思います。区切り文字ごとに別々に呼び出してから、最大の結果を選択する必要があります。 – LiborV

+0

@ LiborV、少し間違いをありがとう、実際にはここで逃した。そして、はい、JavaScriptには 'string.lastIndexOf(searchvalue、start)'しか含まれていません。なぜなら、何らかの代替を求める理由がある配列を受け入れないからです... –

答えて

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

これは機能します。

+0

あなたの簡単なトリックありがとう。少なくともテスト目的のために働いています... –

0

var lastWord = tempLastWord.substring(tempLastWord.lastIndexOf(splitters + 1));

+0

JavaScriptでは、この関数は 'string.lastIndexOf(searchvalue、start)'です。任意の配列を受け入れます... –

関連する問題