如果字符串的长度大于x而没有剪切字,如何插入新行?

时间:2017-07-19 14:27:43

标签: c# append stringbuilder

我输入了这样的字符串:

你好我的名字是Anna_B而我已经30岁了

  

你好,我的名字是

  

hello_my_name是-Ann B

基本上,所有输入字符串都不遵循任何写入模式,并且它们的长度是可变的。 我想在C#语言中添加一个新行,如果characteres的数量大于15但没有任何单词。

我已尝试使用StringBuilder x.AppendLinestring s.TakeWhilestring s.SkipWhile进行了一些实验,但我遇到了麻烦,因为我无法找到任何有效的强大算法我的问题。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

试试这个,

<强>逻辑

    public static IEnumerable<string> Split(string inputText, int maxLength)
    {
        int i = 0;
        while (i + maxLength < inputText.Length)
        {
            var lastIndexofUnderScore = inputText.LastIndexOf('_', i + maxLength);
            var lastIndexofSpace = inputText.LastIndexOf(' ', i + maxLength);
            var index = Math.Min(lastIndexofSpace, lastIndexofUnderScore);
            if (index <= 0) 
            {
                index = maxLength;
            }

            yield return inputText.Substring(i, index - i).Trim();

            i = index + 1;
        }

        yield return inputText.Substring(i).Trim();
    }

通话方式:

var inputText = "hello-my-name is Anna_B and I'm 30_years-old";
var length = 15;

var expectedString = new StringBuilder();
var splittedStrings = Split(inputText, length);

foreach (var splittedString in splittedStrings)
{
    expectedString.AppendLine(splittedString);
}

Console.WriteLine(expectedString);