从文本框中获取前52个字符或更少

private void timer1_Tick(object sender,EventArgs e) {
    timer1.Stop();
    richTextBox2.Text = "";
    richTextBox2.Paste();
    //this errors
    label5.Text = "Clipboard: " + richTextBox2.Text.Substring(0,52) + "..."; 
    if (richTextBox2.Text == richTextBox3.Text) {
        richTextBox3.Paste();
        return;
    }
    else {
        timer1.Start();
    }
}

这是我程序中某个功能的代码,它将成为剪贴板阅读器/显示器。我一直在寻找一种方法来抢先确定数量的字符或更少,但遇到了一些麻烦。

我已经尝试过richTextBox2.Text.Substring(0,52),尽管它不起作用,有人可以帮我吗?

chitow 回答:从文本框中获取前52个字符或更少

Substring()方法假定字符串中实际存在所请求的字符数,如果不是这种情况,它将抛出异常。您可以考虑编写一个可以安全地截断字符串的自定义方法:

public string Truncate(string s,int length,bool includeEllipsis = true)
{
     // Make sure you consider nulls
     if(String.IsNullOrEmpty(s))
     {
          return s;
     }

     if (s.Length > length)
     {
          // Return the substring and an optional ellipsis
          return s.Substring(0,length) + (includeEllipsis ? "..." : "");
     }

     // The string was shorter than your requested length,so return it all
     return s;
}

示例的用法如下:

label5.Text = "Clipboard: " + Truncate(richTextBox2.Text,52); 
,

一种简单的方法是获取需要添加到结果中的子字符串。

string text =  richTextBox2.Text.Length > 52 ? richTextBox2.Text.Substring(0,52) : richTextBox2.Text;

然后添加最多52个字符的文本。

,

该异常是由于字符串少于52个字符。您可以根据字符串的大小来获取子字符串(检查其是否超过52)。例如

var result = richTextBox2.Text.Substring(0,Math.Min(52,richTextBox2.Text.Length));

如果要消除Math.Min,另一种可能的方法是使用Linq

var result = new string(richTextBox2.Text.Take(52).ToArray());
,

您可以尝试使用这种方式:

 @PostMapping("/user")
 User insertNewUser(@Valid @RequestBody User user) {
    // Do something
  }
本文链接:https://www.f2er.com/2952368.html

大家都在问