我有一个来自用户的任意大的文本字符串,需要分成10k块(可能是可调整的值)并发送到另一个系统进行处理。
我试图不用这个重新发明轮子,在我从头开始滚动之前有任何建议吗?
使用C#。
答案 0 :(得分:2)
这可能无法根据您的需要处理每一个案例,但它应该让您继续前进。
public IList<string> ChunkifyText(string bigString, int maxSize, char[] punctuation)
{
List<string> results = new List<string>();
string chunk;
int startIndex = 0;
while (startIndex < bigString.Length)
{
if (startIndex + maxSize + 1 > bigString.Length)
chunk = bigString.Substring(startIndex);
else
chunk = bigString.Substring(startIndex, maxSize);
int endIndex = chunk.LastIndexOfAny(punctuation);
if (endIndex < 0)
endIndex = chunk.LastIndexOf(" ");
if (endIndex < 0)
endIndex = Math.Min(maxSize - 1, chunk.Length - 1);
results.Add(chunk.Substring(0, endIndex + 1));
startIndex += endIndex + 1;
}
return results;
}
答案 1 :(得分:1)
我确信这可能会比你期望的更困难(最自然的语言),但请查看Sharp Natural Language Parser。
我目前正在使用SharpNLP,它运行得很好,但总是有“陷阱”。
如果这不是你想要的,请告诉我。
标记