在C#中,我知道这个
if (textBox1.Text.Length > x)
{
textBox1.AppendText(Environment.NewLine);
}
(x是一些随机数) 但是,如果我想在x之前打破第一个空格怎么办?
答案 0 :(得分:1)
我认为你的问题是:
我想在最接近“x”的空格处插入一个新行,其中空格索引不超过“x”。
所以给出了这个例子:
快速的棕色盒子跳过懒狗。
“X”是30,然后我希望在“跳跃”和“跳过”之间插入一个新行。
我认为这对你有用:
var str = "The quick brown box jumped over the lazy dog.";
var x = 30;
var index = str.Select((c, i) => new {c, i}).TakeWhile(q => q.i < x).Where(q => q.c == ' ' ).Select(q => q.i).Last();
var formatted = str.Insert(index, Environment.NewLine);
其中formatted
包含带换行符的新字符串。请注意,如果字符串中根本没有空格,Last()
将给出异常。在这种情况下,请使用LastOrDefault
并妥善处理。
所以给出你的例子:
var x = 30;
if (textBox1.Text.Length > x)
{
var index = textBox1.Text.Select((c, i) => new {c, i}).TakeWhile(q => q.i < x).Where(q => q.c == ' ' ).Select(q => q.i).Last();
textBox1.Text = textBox1.Text.Insert(index, Environment.NewLine);
}
答案 1 :(得分:0)
或者只是使用LastIndexOf重载:
var current = textBox.Text;
textBox.Text = current.Insert(current.LastIndexOf(' ', 24), Environment.NewLine);
LastIndexOf将开始在24
位置搜索,向后移动 ,直到它接近第一个' '
。
答案 2 :(得分:-1)
在第一次出现Environment.NewLine
的位置插入' '
更新添加了SubString(0,X)
以满足“位置X
之前的第一个空格”
textBox1.Text.Insert(textBox1.Text.SubString(0,X).IndexOf(' '), Environment.NewLine);
答案 3 :(得分:-1)
看看这是否有帮助:
string text = "this is a long sentence";
int x = 10;
string updatedtext = string.Empty;
updatedtext = text.Insert((x - 1) - text.Substring(0,x).Reverse().ToString().IndexOf(' '),Environment.NewLine);
用适当的变量替换文本框内容。
答案 4 :(得分:-1)
如果x为20,则文本框包含字符串:
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
然后下面的代码将返回:
Lorem ipsum dolor
sit amet, consectetur adipisicing elit
if (textBox1.Text.Length > x)
{
int lastSpaceIndex = textBox1.Text.LastIndexOf(' ', x-1, x);
if (lastSpaceIndex < 0)
lastSpaceIndex = x;
textBox1.Text.Insert(lastSpaceIndex, Environment.NewLine);
}
编辑根据Mithun的评论进行更正。