我输入了这样的字符串:
你好我的名字是Anna_B而我已经30岁了
你好,我的名字是
hello_my_name是-Ann B
基本上,所有输入字符串都不遵循任何写入模式,并且它们的长度是可变的。 我想在C#语言中添加一个新行,如果characteres的数量大于15但没有任何单词。
我已尝试使用StringBuilder x.AppendLine
,string s.TakeWhile
,string s.SkipWhile
进行了一些实验,但我遇到了麻烦,因为我无法找到任何有效的强大算法我的问题。
任何帮助将不胜感激:)
答案 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);