Development/Javascript
[JavaScript] 문자열의 바이트(byte) 구하기
레오나르도 다빈츠
2023. 3. 24. 23:07
/**
* 문자열 총 byte 구하기
* @param {string} str 문자열
* @returns {number} 바이트
*/
export const getByteLength = (str) => {
console.log('[str] result >>> ', str)
if (str == null || str.length === 0) {
return 0
}
let size = 0
for (let i = 0; i < str.length; i++) {
size += charByteSize(str.charAt(i))
}
return size
}
/**
* 한글자 당 byte 구하기
* @param {string} charValue 문자열
* @returns {number} 바이트
*/
export const charByteSize = (charValue) => {
if (charValue == null || charValue.length == 0) {
return 0
}
let charCode = charValue.charCodeAt(0)
if (charCode <= 0x00007f) {
return 1
} else if (charCode <= 0x0007ff) {
return 2
} else if (charCode <= 0x00ffff) {
return 3
} else {
return 4
}
}
/**
* 지정된 byte만큼 문자열 자르기
* @param {string} str 문자열
* @param {number} len 자를 byte 개수
* @returns {string} 잘린 문자열
*/
export const cutByteLength = (str, len) => {
if (str == null || str.length == 0) {
return ''
}
let size = 0
let rIndex = str.length
for (let i = 0; i < str.length; i++) {
size += charByteSize(str.charAt(i))
if (size == len) {
rIndex = i + 1
break
} else if (size > len) {
rIndex = i
break
}
}
return str.substring(0, rIndex)
}
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.