【问题标题】:c# TextBox how to get the last letter of a string?c#TextBox如何获取字符串的最后一个字母?
【发布时间】:2016-05-20 16:32:59
【问题描述】:
 private void inputBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        stringScan();
        var regex1 = new Regex(@"[^+^\-^\b^\r\n]");
        var regex2 = new Regex(@"[^0-9^+^\-^/^*^#^\b^\r\n]");

        if (ListBox.Items.Count == 0 && string.IsNullOrWhiteSpace(inputBox.Text))
        {
            if (regex1.IsMatch(e.KeyChar.ToString()))
            {
                e.Handled = true;
                toolTip1.Show("Plus or minus first then followed by numbers.", inputBox, 1500);

            }
        }
        else
        {
            if (regex2.IsMatch(e.KeyChar.ToString()))
            {
               e.Handled = true;  
            }
        }

    }

    public void stringScan()
    {
        char last_char = inputBox.ToString()[inputBox.ToString().Length - 1];
        Console.WriteLine(last_char);
    }

如何获取字符串的最后一个字母/数字?真的很难解释,所以我会展示一些截图。

输出应该显示“0”而不是“1”。 它总是显示“最后一个预览”,而不是我在文本框中输入的最新一个。

【问题讨论】:

  • 试试(?s).$ ........
  • 在单行文本框中最后没有换行
  • myString[myString.Length-1] 不返回最后一个字符吗?

标签: c# string textbox


【解决方案1】:

请记住,当引发事件 inputBox_KeyPress 时,尚未添加键入的密钥。另外,不要为此使用正则表达式。它会过于复杂。

试试TextChanged 事件。

【讨论】:

    【解决方案2】:

    每次更改文本框的内容时都会执行文本框键更改

    所以对于你输入的每个值,你都会调用字符串扫描

    如果你知道文本的长度,这可能会受到限制

    【讨论】:

      【解决方案3】:

      你试试这个怎么样:

      public void stringScan()
      {
      
          String last_char = inputBox.ToString();
          Console.WriteLine(last_char[last_char.Length-1]);
      }
      

      【讨论】:

      • 它有何不同?
      • 由于我无法确定潜在的问题,我的第一个想法是他在输入框中调用了错误的文本部分。他的问题是字面意思:“我怎样才能得到字符串的最后一个字母/数字?”如果我没记错的话是这样的..
      【解决方案4】:

      如果你想要最后输入的字符,我建议:

      private void inputBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
      {
                  Console.WriteLine(e.Text);
      }
      

      如果你想要文本框中的最后一个字符,我建议 Jeroen van Langen 已经告诉的 TextChanged 事件:

      private void inputBox_TextChanged(object sender, TextChangedEventArgs e)
      {
          string inputString = ((TextBox)sender).Text;
          char lastChar = inputString.Last();
          Console.WriteLine(lastChar);
      }
      

      希望代码示例对您有所帮助

      编辑: 现在我知道您可能想从文本框中获取整数,如果是这样,Get integer from Textbox 可以帮助您,代码示例:

       private void inputBox_TextChanged(object sender, TextChangedEventArgs e)
          {
              string inputString = ((TextBox)sender).Text;
      
              int valueFromTextBox;
              if (int.TryParse(inputString, out valueFromTextBox))
              {
                  //parsing successful 
              }
              else
              {
                  //parsing failed. 
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2011-07-07
        • 2011-08-17
        • 2015-12-26
        • 2019-09-10
        • 2015-07-04
        • 1970-01-01
        • 2018-03-14
        相关资源
        最近更新 更多