"偏移"在编程环境中意味着什么?

sky*_*ar7 13 java string offset

"偏移"在编程环境中意味着什么?

这是指在开始还是在远处?

String.offsetByCodePoints(int index, int codePointOffset)方法有什么作用?方法文档中的"未配对的代理"是什么意思?

Ste*_*n C 6

在编程中“偏移”是什么意思?是指在一开始还是一段距离?

一般来说,“偏移”是指从某个给定位置测量的某种形式的距离。该职位可能是……某事的开始……但不一定。

“偏移”的具体含义取决于使用它的上下文。(理想情况下,从上下文中可以清楚地看出含义。)


该方法有什么String.offsetByCodePoints(int index, int codePointOffset)作用?

char此方法计算中特定的位置String。将char是 Unicode 代码点的第一个字符,codePointOffset即 给定位置之后的代​​码点index

(因此,在本文中,“偏移量”指的是从给定代码单元的位置以 Unicode 代码点测量的距离。)

index结果都是普通的字符串索引值;即它们是char位置。

要点...是,当您将 a 视为StringUnicode 代码点序列时,您的代码需要考虑代码点可能由 1 个或 2 个char值组成的事实。

要理解上述内容的含义,您可能需要阅读有关 Unicode、代码点和代码单元、UTF-16 以及 Java 如何对 Unicode 字符串建模的背景知识。


方法文档中的“未配对代理”是什么意思?

Java 字符串将 Unicode 代码点 > 65535 的字符表示为 UTF-16 代理字符。在格式良好的 UTF-16 字符串中,代理项成对出现,分别表示 Unicode 代码点的高位和低位。

这句话的意思是,如果 aString包含未正确配对的代理项,它将把它们视为单独的代码点......出于计算代码点的目的。

另请参阅:Java 中的“代理对”是什么?


Rya*_*ger 1

根据 JavaDoc,

String.offsetByCodePoints(int index, int codePointOffset)
Run Code Online (Sandbox Code Playgroud)

返回此对象内的索引,该索引与 {@code index} 偏移 {@code codePointOffset} 代码点。

这是一个用法示例...

int num = 0;
num = "Test_String".offsetByCodePoints(0, 2); //num is 2
num = "Test_String".offsetByCodePoints(3, 2); //num is 5
num = "Test_String".offsetByCodePoints(9, 5); //Throws an exception since offset goes out-of-bounds
Run Code Online (Sandbox Code Playgroud)