2015-03-18 3 views
1

Я разрабатываю одно приложение для Windows. В моем приложении я хочу получить последнее введенное слово в текстовое поле не последним словом. И я хочу изменить последнее введенное слово на клавишу пробела. Я получаю последнее слово на ключевой до события, как это:Получить последнее введенное слово в текстовом поле Windows phone 8

private async void mytxt_KeyUp_1(object sender, KeyRoutedEventArgs e) 
{ 
    if (e.Key == Windows.System.VirtualKey.Space || e.Key == Windows.System.VirtualKey.Enter) 
     { 
      if (string.IsNullOrWhiteSpace(textBox_string) == false) 
       { 
        string[] last_words = Regex.Split(textBox_string, @"\s+"); 
        int i = last_words.Count(); 
        last_words = last_words.Where(x => x != last_words[i-1]).ToArray();    last_word = last_words[last_words.Count() - 1]; 
        last_word = last_word.TrimStart(); 
       } 
     } 
} 

Я получаю последнее слово по этому методу, но на самом деле я хочу, чтобы получить последнее введенный пользователем слова. Значение, если пользователь перемещает курсор прямо в середину текстового поля и набирает любое слово, тогда я хочу получить это слово в нажатой клавише пробела; Я хочу положение этого слова и могу изменить это слово программно и обновить текстовое поле. Например, если пользователь вводит

H !! мое имя vanani

но затем пользователь перемещает курсор непосредственно после того, как «имя» и «типов является Сохан»

H !! меня зовут sohan

тогда я хочу получить слово и позицию 'is' и то же самое для 'sohan' в событии ввода текста в текстовом поле. Мне нужно место, чтобы заменить это слово другим словом и обновить текстовое поле новым новым текстом.

Я видел эти вопросы. winforms - get last word.. и C# how to get latest char.., но они мне не помогли. Пожалуйста, помогите мне.

+0

Try position = Regex.Match (текст, @ "\ S * (? = \ S $)"). Индекс –

+0

после проверки Regex.IsMatch (текст, тот же шаблон) –

+0

Я не могу понять. Вы имели в виду индекс SelectionStart из текстового поля ??? –

ответ

0

Я основан ответ на мой вопрос. Вот код работал для меня.

Bool isFirst = false; 
int mytempindex; 
private async void mytxt_KeyUp_1(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == Windows.System.VirtualKey.Space) 
     { 
      int i = mytxt.SelectionStart; 
      if (i < mytxt.Text.Length) 
      { 
      if (isfirst == false) 
      { 
       mytempindex = mytxt.SelectionStart; 
       isfirst = true; 
      } 
      else 
      { 
       int mycurrent_index = mytxt.SelectionStart; 
         int templength_index = mycurrent_index - mytempindex; 
       string word = mytxt.Text.Substring(mytempindex, templength_index); //It is the latest entered word. 
       //work with your last word. 
      } 
      } 
     } 
    } 

Я не думаю, что он работает во всех ситуациях, но через это вы можете получить представление о том, как получить последнее введенное слово из Textbox или RichTextBox.

0

Как это:

if (Regex.IsMatch(textBox_string, @"\S*(?=\s?$)")) 
{ 
    Match match = Regex.Match(textBox_string, @"\S*(?=\s?$)"); 
    string word = match.Value; 
    int startingIndex = match.Index; 
    int length = word.Length; 
} 
+0

Эй! он дает последнее слово, я не хочу получать последнее слово. Я хочу отредактированное слово или добавленное слово в текстовом поле в любом месте, будь то вначале, в середине или в прошлом или в любом месте текстового поля. Я просто хочу заменить добавленное или отредактированное слово другим слово. –

+0

@sohanvanani can not читал, что с вашего вопроса ... –

+0

@sohanvanani неважно ... должен идти на работу сейчас, плохо понять это позже –

Смежные вопросы