打破空间(文本框)

时间:2011-11-16 15:36:23

标签: c# asp.net

在C#中,我知道这个

 if (textBox1.Text.Length > x)
    {
        textBox1.AppendText(Environment.NewLine);
    }

(x是一些随机数) 但是,如果我想在x之前打破第一个空格怎么办?

5 个答案:

答案 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的评论进行更正。