gpt4 book ai didi

c# - 在一定数量的字符和换行符之后拆分字符串。在 C# 中

转载 作者:行者123 更新时间:2023-11-30 21:45:14 29 4
gpt4 key购买 nike

背景:我将大字符串(500-5000 个字符)放入一个 PPTX 文件中。我的幻灯片每张幻灯片只有大约 1000 个字符的空间。我想在幻灯片放满后拆分文本并继续下一张幻灯片。据我所知,如果文本已经在幻灯片/文本框之外,则没有办法(非常确定)检查幻灯片(我正在使用“OpenXML SDK 结合”Open-XML PowerTools“)。

到目前为止的过程: 我设法编写了一个方法,在 maxLength 小于 1000 个字符时将字符串恰好拆分为 1000 个字符而不会触发错误(因为它发生在 Substring(startIndex, maxLength )).这是我的截断方法:

public static string Truncate(string text, int startIndex, int maxLength)
{

if (string.IsNullOrEmpty(text)) return text;
if (text.Length > startIndex + maxLength)
{
return text.Substring(startIndex, maxLength) + "-";
}
return text.Substring(startIndex);
}

有问题的:现在的问题是一些字符串有很多换行符而其他字符串很少或没有。这会导致一些琴弦高度很高,而且很大以适应滑梯。

可能的想法:我想估计字符串高度计算换行符并在每个换行符的字符数中增加 30 个字符。这给出了更精确的近似值。 (充满字符的一行通常包含大约 50 个字符,但有时换行符位于行的中间,所以我认为 +30 个字符是一个很好的猜测)。到目前为止,这是我的方法:

public int CountCharacters(string text)
{
var numLines = text.Length;
numLines += (text.Split('\n').Length) * 30;
return numLines;
}

产生的问题:在达到 1000 并考虑换行符后,我现在如何结合这些方法来拆分字符串?或者这毕竟是错误的方法?

最佳答案

这样的事情怎么样:

        string test; //your input string
int j; //variable that holds the slide content length
int max_lines = 10; //desired maximum amount of lines per slide
int max_characters = 1000; //desired maximum amount of characters
char[] input = test.ToCharArray(); //convert input string into an array of characters
string slide_content; //variable that will hold the output of each single slide

while (input.Length > 0)
{
//reset slide content and length
slide_content = string.Empty;
j = 0;

//loop through the input string and get a 'j' amount of characters
while ((slide_content.Split('\n').Length < max_lines) && (j < max_characters))
{
j = j + 1;
slide_content = new string(input.Take(j).ToArray());
}

//Output slide content
Console.WriteLine(slide_content);
Console.WriteLine("=================== END OF THE SLIDE =====================");

//Remove the previous slide content from the input string
input = input.Skip(j).ToArray();
}

Console.Read();

关于c# - 在一定数量的字符和换行符之后拆分字符串。在 C# 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40383511/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com