Unicode Case Folding Utilities

1.1.1 · active · verified Wed Apr 22

unicode-case-folding is a JavaScript library that provides robust utilities for Unicode case folding, specifically designed to facilitate accurate case-insensitive comparisons of strings according to the official Unicode Character Database. Unlike simple string lowercasing methods (like `String.prototype.toLowerCase()`), case folding implements rules defined by the Unicode standard to ensure linguistic correctness across various languages, such as correctly folding the German sharp S ('ẞ') to 'ss'. The current stable version is 1.1.1. Given its foundational nature based on a stable Unicode standard, the library likely follows an infrequent release cadence, updating primarily for new Unicode versions or critical bug fixes rather than feature additions. Its key differentiator lies in strict adherence to the Unicode standard for internationalized comparisons, making it suitable for applications requiring precise textual matching where locale-specific casing differences need to be neutralized without altering the string for display purposes.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates the core `caseFold` and `caseFoldEquals` functions, highlighting their usage for robust internationalized case-insensitive string comparisons, including handling special Unicode characters like the German sharp S (ẞ).

import { caseFold, caseFoldEquals, lookupFolding } from "unicode-case-folding";

// Example 1: Basic case folding for comparison purposes
const originalString1 = "Hello World!";
const foldedString1 = caseFold(originalString1);
console.log(`Original: "${originalString1}" -> Folded: "${foldedString1}"`);

// Example 2: Case-insensitive comparison using caseFoldEquals
const inputA = "Straße"; // German for "Street"
const inputB = "strasse";
const areEqual = caseFoldEquals(inputA, inputB);
console.log(`"${inputA}" and "${inputB}" are case-fold equivalent: ${areEqual}`);

const inputC = "APPLICATION";
const inputD = "application";
console.log(`"${inputC}" and "${inputD}" are case-fold equivalent: ${caseFoldEquals(inputC, inputD)}`);

// Example 3: Handling special Unicode characters like German sharp S (ẞ)
const specialChar = "ẞ";
const foldedSpecialChar = caseFold(specialChar);
console.log(`Folding "${specialChar}" gives "${foldedSpecialChar}"`);

// Example 4: Looking up folding for a specific code point
const codePointBeta = specialChar.codePointAt(0)!;
const foldingForBeta = lookupFolding(codePointBeta);
console.log(`Folding for code point ${codePointBeta} ('ẞ'): ${foldingForBeta?.map(cp => String.fromCodePoint(cp)).join('')}`);

const codePointA = "A".codePointAt(0)!;
const foldingForA = lookupFolding(codePointA);
console.log(`Folding for code point ${codePointA} ('A'): ${foldingForA?.map(cp => String.fromCodePoint(cp)).join('') || 'no special folding'}`);

console.log("This demonstrates how to use unicode-case-folding for reliable, internationalized case-insensitive string comparisons.");

view raw JSON →