本文共 1065 字,大约阅读时间需要 3 分钟。
在处理字符串长度计算时,特别是在处理多字节字符编码的语言(如UTF-8)时,常常需要根据实际显示宽度来决定字符串的长度。以下是针对不同语言的解决方案:
对于JavaScript,可以通过遍历每个字符的charCodeAt()方法来计算字节数,然后根据实际字符宽度进行调整。例如:
function getStringWidth(s) { let length = 0; for (let i = 0; i < s.length; i++) { const code = s.charCodeAt(i); if (code <= 255) { length++; } else { length += 0.5; } } return Math.ceil(length);} 对于PHP,则可以通过逐字符截断字符串来计算实际显示的宽度。例如:
function get_string_width($s) { $length = 0; while (strlen($s) > 0) { $old_length = strlen($s); $s = mb_substr($s, 0, -1, 'utf-8'); if (($old_length - strlen($s)) == 1) { $length += 0.5; } else { $length += 1; } } return ceil($length);} 基于上述方法,可以实现对字符串长度的精确计算。例如,截取字符串的函数可以如下实现:
function cut_string($s, $l = 140) { $length = get_string_width($s); if ($length > $l) { while (get_string_width($s . '...') <= $l) { $s = mb_substr($s, 0, -1, 'utf-8'); } $s .= '...'; } return $s;} 这些方法能够有效地处理不同编码下的字符串长度问题,确保计算结果符合实际显示的字符宽度。
转载地址:http://mztfk.baihongyu.com/