length:<span id="normal"></span>

<br>

全角半角判定:<span id="custom"></span>

<br>

<!-- 切り上げ -->
全角半角判定(切り上げ):<span id="ceil"></span>

<br>

<!-- 切り下げ -->
全角半角判定(切り下げ):<span id="floor"></span>
const get2byteLength = (str) => {
  let count = 0

  for (let i = 0, len = str.length; i < len; i++) {
    let c = str.charCodeAt(i)

    if (!str[i].match(/\r?\n/g)) {
      if (c >= 0x0 && c <= 0x7f) {
        count += 0.5
      } else {
        count += 1
      }
    }
  }

  return count
}

const text = 'abcdefgあいうえお'

document.getElementById('normal').innerHTML = text.length
document.getElementById('custom').innerHTML = get2byteLength(text)
document.getElementById('ceil').innerHTML = Math.ceil(get2byteLength(text))
document.getElementById('floor').innerHTML = Math.floor(get2byteLength(text))
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.