我需要读取 70 个字符 block 并将其发送到终端模拟器。我真的不知道当子字符串时如何做到这一点 长度,不能是字符串中更大的数据量(微软生成错误)。文本框中的最后一行始终小于 70。
有谁知道更好的方法吗?
打开自动换行后,文本框可以接受 1000 个字符。
int startIndex = 0;
int slength = 70;
for (int i = 0; i < body.Text.Length; i += 70)
{
if(body.Text.Length < 70)
{
String substring1 = body.Text.Substring(startIndex, body.Text.Length);
CoreHelper.Instance.SendHostCommand("¤:5H¤NCCRMKS / " + body.Text, UIHelper.Instance.CurrentTEControl, true, true);
};
if (body.Text.Length > 70)
{
String substring1 = body.Text.Substring(startIndex, slength);
CoreHelper.Instance.SendHostCommand("¤:5H¤NCCRMKS / " + body.Text, UIHelper.Instance.CurrentTEControl, true, true);
};
}
最佳答案
方法 1(传统子字符串)- 最快:
string str = "123456789";
int currentIndex = 0;
int pageSize = 7;
List<string> results = new List<string>();
while(true)
{
int length = Math.Min(pageSize, str.Length - currentIndex);
string subStr = str.Substring(currentIndex, length);
results.Add(subStr);
if (currentIndex + pageSize >= str.Length - 1)
break;
currentIndex += pageSize;
}
方法 2 (Linq):
Linq 的 Skip 和 Take 的组合也能达到这个目的。这称为分页:
String str = "123456789";
int page = 0;
int pageSize = 7; // change this to 70 in your case
while(true)
{
string subStr = new string(str.Skip(page * pageSize).Take(pageSize).ToArray());
Console.WriteLine(subStr);
page++;
if (page * pageSize >= str.Length)
break;
}
打印:
1234567
89
关于c# - 文本框按字符数分割文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311505/