728x90
반응형

byte 수로 문자열 자르기

const str = '10센치는 권정열';

function sliceStringByByte(str, byteLength) {
  const encoder = new TextEncoder();
  let currentByteLength = 0;
  let i = 0;
  while (i < str.length && currentByteLength < byteLength) {
    const charCode = str.charCodeAt(i);
    const byteCount = encoder.encode(str[i]).length;
    currentByteLength += byteCount;
    i++;
  }
  return str.slice(0, i);
}

console.log(sliceStringByByte(str, 5));	// 10센

 


문자열의 byte 수를 계산해서 2분의 1만큼 자르기

const str = '10센치는 권정열';

function sliceStringByByte(str, byteLength) {
  const encoder = new TextEncoder();
  let currentByteLength = 0;
  let i = 0;
  while (i < str.length && currentByteLength < byteLength) {
    const charCode = str.charCodeAt(i);
    const byteCount = encoder.encode(str[i]).length;
    currentByteLength += byteCount;
    i++;
  }
  return str.slice(0, i);
}

function titleStar(str) {
  const byteLength = new TextEncoder().encode(str).length;
  const halfByteLength = Math.ceil(byteLength / 2);
  const slicedStr = sliceStringByByte(str, halfByteLength);
  return slicedStr;
}

console.log(titleStar(str));	// 10센치는
반응형
복사했습니다!