gpt4 book ai didi

java - java字符位置歧义

转载 作者:行者123 更新时间:2023-12-01 13:09:17 25 4
gpt4 key购买 nike

我有一个使用 styledDocumentJEditorPane

我的问题是由换行引起的。因为我正在为Windows制作应用程序,所以换行符用(CR LF)表示。

问题是文本提取表单编辑器套件上的 chartAt(int) 方法将换行符计为两个字符,但 styledDocument 上的 setCharacterAttributes(int, int, AttributeSet, boolean) 方法将换行符视为一个字符。

所以假设我想对所有字符“福”应用属性集。简单直观:

String text; //set to text of JEditorPane
StyledDocument doc; //set to doc of JEditorPane
int length = text.length();
for (int iii = 0; iii < length; iii++) {
if (text.chartAt(iii) == '福')
doc.setCharacterAttributes(iii, 1, AttributeSet, boolean);
}

它仅在第一个换行之前有效。然后它会减少一个字符,并在每个换行符处再减少一个字符。

如何使用一致的角色位置?

最佳答案

当使用 StyledDocument 读取文档时,它会保留在内存中,并且换行符会被 '\n' 替换。来源:here

因此,您必须考虑到这一点,并使用 EndOfLineStringProperty property 检查换行符的长度是多少。 .

因此,每当您在文本中看到 '\n' 时,您都必须知道实际上是否需要将其计为 1 个或 2 个字符。

其他解决方案是:

  • 阅读文档后,将 EndOfLineStringProperty 更改为 '\n',然后指示 StyledDocument 将文档保存为字符串。然后,在该字符串中,您可以将换行符计为一个字符,就像 StyledDocument 所做的那样。
  • text 中出现的所有 EndOfLineStringProperty 替换为 '\n',然后计数即可生效。

关于java - java字符位置歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23020009/

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