如何实现JavaScript中console.log输出加粗字符?
实现JavaScript控制台加粗字符输出函数
问题背景
已知在JavaScript控制台中直接输出𝗯𝗼𝗹𝗱这类加粗Unicode字符能显示加粗效果,现在需要编写printBold函数,将输入的普通英文字符串转换为对应加粗字符并输出,但缺少完整的普通字符到加粗Unicode字符的映射逻辑。
解决方法
1. 利用Unicode编码偏移自动转换
普通拉丁字母和对应的数学式加粗拉丁字母之间存在固定的编码偏移量,无需手动维护完整映射表:
- 小写字母
a-z的Unicode范围是U+0061到U+007A,对应加粗小写字母范围为U+1D5D4到U+1D5ED,偏移量为120276 - 大写字母
A-Z的Unicode范围是U+0041到U+005A,对应加粗大写字母范围为U+1D5A0到U+1D5B9,偏移量为120127
基于此规律实现的函数:
const printBold = (word) => { const boldWord = Array.from(word).map(char => { const charCode = char.charCodeAt(0); // 处理小写字母 if (charCode >= 97 && charCode <= 122) { return String.fromCharCode(charCode + 120276); } // 处理大写字母 else if (charCode >= 65 && charCode <= 90) { return String.fromCharCode(charCode + 120127); } // 非字母字符直接返回原字符 else { return char; } }).join(''); console.log(boldWord); }; // 测试 printBold('hello WORLD!'); // 输出𝗵𝗲𝗹𝗹𝗼 𝗪𝗢𝗥𝗟𝗗!
2. 手动构建映射表(可选)
如果需要精准控制特定字符的映射,可手动构建完整字符映射表,数学式加粗拉丁字母的完整对应关系如下:
- 小写:a→𝗮, b→𝗯, c→𝗰, d→𝗱, e→𝗲, f→𝗳, g→𝗴, h→𝗵, i→𝗶, j→𝗷, k→𝗸, l→𝗹, m→𝗺, n→𝗻, o→𝗼, p→𝗽, q→𝗾, r→𝗿, s→𝘀, t→𝘁, u→𝘂, v→𝘃, w→𝘄, x→𝘅, y→𝘆, z→𝘇
- 大写:A→𝗔, B→𝗕, C→𝗖, D→𝗗, E→𝗘, F→𝗙, G→𝗚, H→𝗛, I→𝗜, J→𝗝, K→𝗞, L→𝗟, M→𝗠, N→𝗡, O→𝗢, P→𝗣, Q→𝗤, R→𝗥, S→𝗦, T→𝗧, U→𝗨, V→𝗩, W→𝗪, X→𝗫, Y→𝗬, Z→𝗭
构建映射表后的函数实现:
const boldCharMap = { 'a': '𝗮', 'b': '𝗯', 'c': '𝗰', 'd': '𝗱', 'e': '𝗲', 'f': '𝗳', 'g': '𝗴', 'h': '𝗵', 'i': '𝗶', 'j': '𝗷', 'k': '𝗸', 'l': '𝗹', 'm': '𝗺', 'n': '𝗻', 'o': '𝗼', 'p': '𝗽', 'q': '𝗾', 'r': '𝗿', 's': '𝘀', 't': '𝘁', 'u': '𝘂', 'v': '𝘃', 'w': '𝘄', 'x': '𝘅', 'y': '𝘆', 'z': '𝘇', 'A': '𝗔', 'B': '𝗕', 'C': '𝗖', 'D': '𝗗', 'E': '𝗘', 'F': '𝗙', 'G': '𝗚', 'H': '𝗛', 'I': '𝗜', 'J': '𝗝', 'K': '𝗞', 'L': '𝗟', 'M': '𝗠', 'N': '𝗡', 'O': '𝗢', 'P': '𝗣', 'Q': '𝗤', 'R': '𝗥', 'S': '𝗦', 'T': '𝗧', 'U': '𝗨', 'V': '𝗩', 'W': '𝗪', 'X': '𝗫', 'Y': '𝗬', 'Z': '𝗭' }; const printBold = (word) => { const boldWord = Array.from(word).map(char => boldCharMap[char] || char).join(''); console.log(boldWord); }; // 测试 printBold('hello WORLD!'); // 输出𝗵𝗲𝗹𝗹𝗼 𝗪𝗢𝗥𝗟𝗗!
内容的提问来源于stack exchange,提问作者mouchin777
相关产品推荐
相关产品推荐

