函数

GLibstrncasecmp

已弃用:2.2 

声明 [src]

gint
g_strncasecmp (
  const gchar* s1,
  const gchar* s2,
  guint n
)

说明 [src]

不区分大小写的字符串比较,对应于在支持它的平台上的标准 strncasecmp() 函数。它类似于 g_strcasecmp(),只是它只比较字符串的前 n 个字符。

已弃用:自 2.2 版

g_strncasecmp() 的问题在于它通过调用 toupper()/tolower() 来进行比较。这些函数是特定于区域设置的,并对单个字节操作。然而,由于字符可能是多字节的,因此不可能通过对字节进行操作从国际化的角度正确处理事物。因此,如果保证你的字符串是 ASCII,那么 g_strncasecmp() 会中断,因为它区分区域设置;如果你的字符串本地化了,那么它会中断,因为它根本不适用于许多编码,包括 UTF-8、EUC-JP 等。

因此,有两种替代技术:g_ascii_strncasecmp(),它只适用于 ASCII 且不区分区域设置,以及 g_utf8_casefold(),后面跟对所得字符串执行的 strcmp(),这对不区分大小写的 UTF-8 排序非常有用。

参数

s1

类型: const gchar*

要与 s2 比较的字符串。

该数据归函数的调用者所有。
该值是一个以空字符结尾的 UTF-8 字符串。
s2

类型: const gchar*

要与 s1 比较的字符串。

该数据归函数的调用者所有。
该值是一个以空字符结尾的 UTF-8 字符串。
n

类型: guint

要比较的最大字符数。

返回值

类型: gint

如果字符串匹配,则返回 0;如果 s1 < s2,则返回负值;如果 s1 > s2,则返回正值。