一、方法介紹
在計算機編程中,字符串轉整數是一個比較基礎的操作,在日常開發中經常會用到。在Javascript、Python、Java等多種編程語言中,都提供了相關的API可以實現字符串轉整數。以下是幾種常見的方法:
- parseInt()
- Number()
- bitwise operator
二、parseInt()
parseInt()是Javascript中最常用的將字符串轉換為整數的函數之一。其基本語法為:
parseInt(string, radix)
其中,string是需要轉換的字符串,radix是轉換時的基數,默認為10。
以下是一個實際的應用:
const a = '100'; const b = parseInt(a, 10); console.log(b); // 輸出 100
1. parseInt()使用方法
parseInt()可以傳入兩個參數,分別是字符串和數制基數。當第二個參數不傳時,默認為10進制。
首先來介紹這個函數的第一個參數: string。
當string為數字字符串時,可以直接轉換成數字。
const str1 = '123'; console.log(parseInt(str1)); // 輸出 123
當string開頭有空格時,空格將會被忽略。
const str2 = ' 123'; console.log(parseInt(str2)); // 輸出 123
當string不以數字開頭時,parseFloat()返回NaN。比如“abc”,就是一個非數字的字符串。
const str3 = 'abc'; console.log(parseInt(str3)); // 輸出 NaN
2. radix 數制基數
第二個參數radix用於表示使用的進制數,從而告訴函數如何正確地解析string。
當第二個參數不傳時,parseInt()會根據string的開頭字符自動識別數制。
const str4 = '0x10'; console.log(parseInt(str4)); // 輸出 16
當我們使用parseInt() 的時候,給定進制進制後,如果string 開頭的數字,大於等於 radix,那麼返回的就是 NaN ,因為這時,string不是一個有效的數字表示,例如:
console.log(parseInt('20', 2)); // 輸出 NaN
實際上,這個例子表示了解釋器認為’20’ 按照二進制來解碼時不是一個有效的二進制數字,所以(parseInt 在 Radix 大於10 時,會自動識別),我們要手動傳入2進制,如果 Number 裡面傳字符串,除了純數字字符串(空格也不行),其他的都是 NaN。
3. parseInt VS Number
parseInt()和Number()都可以實現將字符串轉換為數字的功能,下面是他們的主要區別:
- parseInt()的轉換方式是從字符串左邊第一個開始解析,直到解析到非數字字符,然後返回已解析部分組成的整數,而Number()則是將整個字符串都解析成數字。
- 如果轉換的字符串不是純數字,parseInt()會返回第一個數字字符之後的所有字符的值,而Number()則會返回NaN。
- 當轉換一個空字符串時,parseInt()會返回NaN,而Number()會返回0。
可以看出,parseInt()更適合處理特定格式的字符串,比如日期和金錢格式等,而Number()更適合用於數學計算。
三、Number()
Number()是Javascript中另一個將字符串轉換為數字的函數。其基本語法為:
Number(string)
其內部實現與parseInt()有很大的不同,與其說Number()是一種將字符串轉換成數字的方法,不如說是將其他數據類型轉換為數字的方法。這裡只介紹將字符串轉換成數字時的應用。
以下是一個實際的應用:
const a = '100'; const b = Number(a); console.log(b); // 輸出 100
值得注意的是,Number()在轉換非數字字符串時返回NaN,而不是0。
console.log(Number('abc')); // 輸出 NaN
四、bitwise operator
在使用Javascript、C、C++等編程語言時,可以使用位運算符將字符串轉換成整數。
在Javascript中,可以使用按位取反的方式實現字符串轉數字:
const a = '100'; const b = ~~a; console.log(b); // 輸出 100
在C和C++中,可以使用atoi()函數將字符串轉換成整數。
#include #include int main() { char a[] = "12345"; int b = atoi(a); printf("%d", b); // 輸出 12345 return 0; }
五、安全方面
在進行字符串轉數字時,有一些安全問題需要注意。比如,當字符串中包含惡意代碼時,可能會導致代碼注入或跨站腳本攻擊等安全問題。因此,在進行字符串轉數字時,需要進行安全驗證,比如:
- 對輸入字符串進行校驗,只允許包含數字字符。
- 對輸入字符串進行長度限制。
- 使用正則表達式,篩選非數字字符。
六、總結
字符串轉整數是編程中比較基礎的操作之一,Javascript、Python、Java等多種編程語言都支持該功能。在Javascript中最常用的函數是parseInt()和Number(),其中parseInt()更適合處理特定格式的字符串,Number()更適合用於數學計算。在進行轉換時,需要注意安全問題,對輸入的字符串進行校驗和過濾非數字字符等安全措施。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/201027.html