java rtf读取_如何读取RTF文件的一部分并保持格式化

这不是一个完美的解决方案,但它适用于我的特定场景 . 我发布它以防以后帮助其他人,但我仍在寻找更好的解决方案 . 为了使下面的工作,它有两个先决条件:

我的分隔符必须位于文本的开头和结尾

我的分隔符必须是不同的字体或样式,以便它与周围的任何文本都有自己独特的标记

码:

private static IEnumerable GetListFromDelimitedText(String text)

{

var textSplit = text.Split(new[] { "~~~~~~~~" }, StringSplitOptions.None);

var header = GetHeaderOfRtf(textSplit);

var footer = GetFooterOfRtf(textSplit);

var listWithoutHeaderAndFooter =

textSplit.Where((text, index) => index > 0 && index < textSplit.Length - 1);

return GetSnippetsWithHeaderAndFooter(listWithoutHeaderAndFooter, header, footer);

}

private static IEnumerable GetSnippetsWithHeaderAndFooter(IEnumerable snippetList, String header, String footer)

{

return snippetList.Select(text =>

{

var textWithoutLeadingBracket = text.Substring(text.IndexOf('}') + 1);

var cleanedText = textWithoutLeadingBracket.Substring(0, textWithoutLeadingBracket.LastIndexOf('{'));

return header + cleanedText + footer;

}

);

}

private static string GetFooterOfRtf(IEnumerable textSplit)

{

var lastSplit = textSplit.Last();

return lastSplit.Substring(lastSplit.IndexOf('}') + 1);

}

private static string GetHeaderOfRtf(IEnumerable textSplit)

{

var firstSplit = textSplit.First();

return firstSplit.Substring(0, firstSplit.LastIndexOf('{'));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值