我正在做一个从java到c#的转换项目,有没有BreakIterator版的c#版?我一直在尝试IEnumerator,但在下面找不到iterator.SetText()的用法,有没有人能为下面的几行建议等效的C#代码:
String finalResult=""
ArrayList<String> resultList = new ArrayList<String>();
BreakIterator iterator = BreakIterator.getSentenceInstance(currentLocale);
//int counter = 0;
iterator.setText(finalResult);
int lastIndex = iterator.first();
while (lastIndex != BreakIterator.DONE)
{
int firstIndex = lastIndex;
lastIndex = iterator.next();
if (lastIndex != BreakIterator.DONE)
{
String sentence = finalResult.substring(firstIndex, lastIndex);
resultList.add(sentence);
System.out.println("sentence = " + sentence);
//counter++;
}
}发布于 2020-03-13 07:25:34
BreakIterator是一种支持对Unicode文本的任意字符串进行区域识别边界分析的机制。我怀疑Java类在很大程度上是基于(甚至可能直接依赖于,但我在猜测) ICU (国际统一码组件)项目:http://site.icu-project.org/
引用ICU docs
文本边界分析是在格式化和处理文本时定位语言边界的过程。此过程的示例包括:
当显示或删除( printing.
将每个单词的第一个字母作为文本的一个特定单元(例如,查找文档中的第三个单词)。
ICU提供了C语言绑定,名为ICU4C。ICU FAQ描述了ICU4C:
C和C++语言以及许多操作系统环境并不完全支持Unicode和符合标准的文本处理服务。尽管有些平台确实提供了很好的Unicode文本处理服务,但可移植的应用程序代码无法利用它们。ICU4C库填补了这一空白。ICU4C为应用程序提供了一个开放、灵活、可移植的基础,以满足其软件全球化需求。ICU4C密切跟踪行业标准,包括Unicode和CLDR (通用区域数据存储库)。
SIL International通过一个名为icu-dotnet的项目提供了C#语言绑定,允许您在C#应用程序中使用ICU4C。
你可以在Github上找到官方的icu-dotnet存储库:
https://github.com/sillsdev/icu-dotnet
或者,通过Nuget安装它:
https://stackoverflow.com/questions/44244081
复制相似问题