Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要在某个索引处断行,并且不使用c中断单词#_C#_String - Fatal编程技术网

C# 需要在某个索引处断行,并且不使用c中断单词#

C# 需要在某个索引处断行,并且不使用c中断单词#,c#,string,C#,String,我有一个字符串如下 innerString s=“单击注销将清除我们的cookie,并将您从所有设备的堆栈溢出中注销” 我需要打破字符串,形成一个行的格式,每行应该包含37个字符 条件: 1) 它不应该破坏这个词 例如:单击“注销”将清除我们的coo ies并将您从al上的堆栈溢出中注销 l设备 我试着使用下面的代码 int appendCount = linkCount / 38; if (innerString.Len

我有一个字符串如下

innerString s=“单击注销将清除我们的cookie,并将您从所有设备的堆栈溢出中注销”

我需要打破字符串,形成一个行的格式,每行应该包含37个字符

条件:

1) 它不应该破坏这个词

例如:单击“注销”将清除我们的coo
ies并将您从al上的堆栈溢出中注销
l设备

我试着使用下面的代码

                int appendCount = linkCount / 38;
                    if (innerString.Length > 37)
                    {
                        int startvalue = 38;

            if(innerstring[startvalue]==" ")
            {
                innerString = innerString.Insert(startvalue, System.Environment.NewLine).TrimEnd();
                    startvalue = startvalue + 38;


            }

            else
            {
            int i=innerstring.LastIndexOf(" ",startvalue);
            startvalue=i++;
                            innerString = innerString.Insert(startvalue, System.Environment.NewLine).TrimEnd();
            startvalue = startvalue + 38;
            }
输出应如下所示,中间不打断任何单词:

单击“注销”将清除我们的Cookie
并将您从
所有设备的堆栈溢出中注销


由于您想在某个索引(您知道)后换行,请尝试下面的。。。。 这里是环境。新线不行
var x_test=stringexample.IndexOf(“\n”)

在while循环中添加了整个内容,它可以工作:

string innerString = "Clicking Log Out will clear our cookies and log you out of Stack Overflow on all devices";
if (innerString.Length > 37)
{
    int startvalue = 38;
    while (startvalue < innerString.Length)
    {
        if (innerString[startvalue] == ' ')
        {
            innerString = innerString.Insert(startvalue, System.Environment.NewLine).TrimEnd();
            startvalue = startvalue + 38;
        }
        else
        {
            int i = innerString.LastIndexOf(" ", startvalue);
            startvalue = i++;
            innerString = innerString.Insert(startvalue, System.Environment.NewLine).TrimEnd();
            startvalue = startvalue + 38;
        }
    }
}
string innerString=“单击注销将清除我们的cookie,并将您从所有设备的堆栈溢出中注销”;
如果(innerString.Length>37)
{
int startvalue=38;
while(startvalue
我注意到您在前面的回答中添加了一条注释,并询问了另一个不适用的字符串。我不知道你为什么要删除它,但我回头看了看,得出了一个很好的简短答案,应该适用于任何句子

    public static string SplitByLength(string sentence, int length)
    {
        //Split the sentence up into individual words to add to a sentence
        var words = sentence.Split(' ');

        StringBuilder ret = new StringBuilder();
        StringBuilder line = new StringBuilder();

        //loop through every word
        foreach (var word in words)
        {
            //And add each one with a space at the end
            line.Append(word + " ");

            //If we have reached the end of a line or we have the last word
            if(line.Length >= length || word == words.Last())
            {
                //add the line to the results
                ret.AppendLine(line.ToString());
                //start new line
                line.Clear();
            }
        }

        return ret.ToString();
    }

这些变量并没有很好的命名,但我用几个样本进行了测试,结果都如预期的那样。我还使用了字符串生成器,因为它在不断更改字符串时效率更高。

1。格式化你的代码,它会伤害你的眼睛。2.到底出了什么问题?你看到的问题是什么?3.您是否使用了调试器,设置了断点,检查了变量?问题出在哪里?如果最后一个字被切掉,看起来您正在删除它。这是故意的吗?或者你仍然想在上面一行显示cookies。如果我打断了这一行,那么它就不应该在右端打断单词。好的,这就是我的想法,但在你所做的编辑中,它已经删除了单词cookies,所以我只是想在尝试发布答案之前确认一下。谢谢你的澄清。如果我打断了这条线,那么它就不应该在最后打断这个词,该死,我回来是为了添加完全相同的答案,但你在这一点上击败了我:)