全角数字半角数字変換

Benchmark created on


Description

convert 0-9 (U+FF10 - U+FF19) to 0-9 (U+0030 - U+0039).

Test runner

Ready to run.

Testing in
TestOps/sec
String.prototype.replace with regex and charCode
function replaceToHalfWidthDigits(str) {
	return str.replace(/[0-9]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 0xfee0));
}

for (let i = 0; i < 1000; i++) {
	const value = '0123456789';
	const result = replaceToHalfWidthDigits(value);
	if (result !== '0123456789') {
		console.log('FAIL');
		exit(1);
	}
}
ready
String.prototype.replaceAll with regex and charCode
function replaceToHalfWidthDigits(str) {
	return str.replaceAll(/[0-9]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 0xfee0));
}

for (let i = 0; i < 1000; i++) {
	const value = '0123456789';
	const result = replaceToHalfWidthDigits(value);
	if (result !== '0123456789') {
		console.log('FAIL');
		exit(1);
	}
}
ready
replace in loop
function replaceToHalfWidthDigits(str) {
	let str2 = '';
	for(const c of str) {
		switch (c) {
			case '0': str2 += '0'; break;
			case '1': str2 += '1'; break;
			case '2': str2 += '2'; break;
			case '3': str2 += '3'; break;
			case '4': str2 += '4'; break;
			case '5': str2 += '5'; break;
			case '6': str2 += '6'; break;
			case '7': str2 += '7'; break;
			case '8': str2 += '8'; break;
			case '9': str2 += '9'; break;
			default: str2 += c;
		}
	}
	return str2;
}

for (let i = 0; i < 1000; i++) {
	const value = '0123456789';
	const result = replaceToHalfWidthDigits(value);
	if (result !== '0123456789') {
		console.log('FAIL');
		exit(1);
	}
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.