JavaScript >> Javascript 文檔 >  >> JavaScript

舒適號碼

我從未使用過我見過的將逗號添加到數字的少數腳本,因為通常我想將該功能應用於整個文本塊。必須提取數字,添加逗號,然後將它們放回原處成為一項不必要的複雜任務,而沒有一種方法可以一次性完成。所以,這是我的嘗試(如果 JavaScript 正則表達式支持後視,它可能會更短):

String.prototype.commafy = function () {
	return this.replace(/(^|[^\w.])(\d{4,})/g, function($0, $1, $2) {
		return $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,");
	});
}

Number.prototype.commafy = function () {
	return String(this).commafy();
}

以下是如何使用它的幾個示例:

(1000).commafy();
// Output: 1,000

var data = '1\n' +
	'10\n' +
	'100\n' +
	'1000\n' +
	'10000\n' +
	'100000\n' +
	'1000000\n' +
	'12345678901234567890\n' +
	'1000.99\n' +
	'1000.9999\n' +
	'.9999\n' +
	'-1000\n' +
	'$1000\n' +
	'"1000"\n' +
	'1000MHz\n' +
	'Z1000';

data.commafy();
/* Output:
1
10
100
1,000
10,000
100,000
1,000,000
12,345,678,901,234,567,890
1,000.99
1,000.9999
.9999
-1,000
$1,000
"1,000"
1,000MHz
Z1000
*/

請注意,它將逗號添加到後跟非數字字符的數字,但避免將逗號添加到緊跟在點(小數點)、字母或下劃線之前的數字。如圖所示,這可以應用於單個數字或整個文本塊。

這是一個很好的例子,說明正則表達式可以幫助縮短和簡化代碼,即使在您最初可能不會使用它們的地方。

編輯: 我在我的文章 Mimicking Lookbehind in JavaScript 中包含了上述代碼的替代實現,它暫時反轉字符串以允許簡化方法。


Tutorial JavaScript 教程
  1. webgl 試圖畫一個三角形

  2. 如何在沒有 create-react-app 的情況下編寫 React 代碼

  3. 在 Remix 中構建視頻聊天應用程序

  4. 2021 年的 NPM 包

  5. 瀏覽器中的計時器分辨率

  6. 在 HTML 中呈現 JSON 數據

  7. 空間物理學

  1. 排列/組合算法備忘單

  2. JavaScript中some()和every()的區別

  3. 計算用戶會話計數

  4. 使用 Bower 的瀏覽器包管理

  5. 使用 NextJS 和 MDX 創建 Speaker Deck

  6. 什麼是 JAMStack,您為什麼要關心?

  7. Javascript 搜索算法

  1. 如何建立搜索體驗

  2. JS 中的輪詢 ABC

  3. 在 Vue.js 中構建 Netlify 統計查看器

  4. MovieDex - 我的第一個 React 項目!