は、メソッドの呼び出し
ロジック
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);
を彼らは常に、これらのフォーマットに従っていますか?単語を結んでいる行がある場合、分割方法に気をつけますか? – Orangesandlemons
入力文字列の単語は空白スペース "_"および/または " - "で区切られています。 唯一の要件は単語をカットしないことです。例えば、単語「Anna」の文字は同じ行にあるはずです。しかし、 "is-Anna"は2行で書くことができ、文字 " - "がどの行に置かれているかは重要ではありません。 – AnnaB
このようなものは、単語の境界などを処理するのに最適な正規表現で最もうまくいきます –