字符串转数字技巧汇总:多种方法解析与应用
如何将字符串转换成数字
如何将字符串转换为数字?
1.使用parseInt()
parseInt()解析字符串并返回一个整数。
允许有空格。
仅返回第一个数字。
但是这种方法有一个局限性。
如果解析十进制数,它将四舍五入到最接近的整数值并将该值转换为字符串。
您可能需要使用parseFloat()方法进行文本转换。
2.使用Number()
Number()可用于将JavaScript变量转换为数字。
我们可以用它来将字符串转换为数字。
如果该值无法转换为数字,则返回NaN。
3.使用一元运算符(+)
一元加运算符(+)位于其操作数之前并计算其操作数,但如果尚未将其转换为数字,请尝试将其转换为数字。
4.使用parseFloat()
parseFloat()解析字符串并返回一个数字。
允许有空格。
仅返回第一个数字
5。
使用Math.floor()
Math.floor()函数返回小于或等于给定数字的最大整数。
对于十进制数来说,这可能有点棘手,因为它返回最接近整数的值作为数字。
6.数字相乘
将字符串值乘以1不会改变该值,并且默认情况下会将其转换为数字。
7.双波浪号(~~)运算符
我们可以使用双波浪号运算符将字符串转换为数字。

Excel公式技巧从字符串中提取数字数字位于字符串开头
Excel公式技巧:从字符串中提取数字——数字在字符串开头
本文主要探讨提取字符串开头的数字的技术:
1.这些数字是连续的
2。
这些连续的数字位于字符串的开头
3.期望的结果是将这些连续的数字返回到单个单元格中。
对于下面检查的每个解决方案,我们需要在两种不同的情况下测试其健全性:
1。
该字符串除开头外不包含任何数字,例如B.123ABC。
2.字符串开头以外的地方(结尾或中间)都有数字,例如123ABC456或123ABC456DEF。
无论字符串是否包含开头以外的数字,我们将讨论的一些解决方案都将起作用,但有些解决方案有局限性。
这在分析每个解决方案时都清楚地表达出来。
LOOKUP和LEFT
公式1:
=-LOOKUP(1,-LEFT(A1,ROW(INDIRECT("1:"&LEN(A1))))))
如果单元格A1中的内容为“123ABC”,则上述公式1返回“123”。
解析过程如下:
ROW(INDIRECT("1:"&LEN(A1)))
生成一个从1到A1单元格字符串长度的整数由单列数组组成:
{1;2;3;4;5;6
这样公式1就变成:
=-LOOKUP(1,-LEFT(A1,{1;2;3;4;5;6}))
由于LOOKUP强制生成数组,所以这里的LEFT不是返回单个值,而是返回one六个值的序列,其中每个值对应于A1中的字符串,该字符串将LEFT的num_chars参数指定为1,2,3,4,5,6,即即:
=-LOOKUP(1,-{“1”;“12”;“123”;“123A”;“123AB”;“123ABC”})
乘法将数组除以-1,得到以下结果获取:
=-LOOKUP(1,{-1;-12;-123;#VALUE!;#VALUE!;#VALUE!})
对于LOOKUP:如果在“lookup_vector”中找不到“lookup_value”,并且假设“lookup_vector”中没有大于“lookup_value”的值,则该函数返回“lookup_vector”的最后一个值。
(在本例中是一个数字)。
该函数还会忽略Lookup_Vector中任何不正确的值。
为此,在Lookup_Vector的开头添加一个负号(通过创建一个由负数、零(如果提取的字符串预计以0开头,例如0123ABC)或错误值组成的数组)确保安全性查找值1始终是合理合法的选择。
由于在Lookup_Vector中未找到1,因此此处的公式返回数组中的最后一个值,即-123。
当然,这绝对不是处理这个公式结构的唯一方法。
只需确保所选的lookup_value足够大即可。
其实,这并不难。
为了确保这个公式构造有效,让lookup_value使用所谓的“大数”(即9.999999999999999E+307,Excel中允许的最大正数)。
或者,有些人只是使用“非常大”的值,例如10^10(其优点是不像“大数字”那样显得笨重)。
由于公式中的LOOKUP函数返回1-123,因此在前面添加一个负号即可得到所需的值123。
然而,一级方程式并不可靠。
由于某些字符串可能返回不同的结果,例如单元格中的值为12JUN,
=-LOOKUP(1,-LEFT(A1,ROW(INDIRECT("1:"&LEN(A1)))))
转换为:
=-LOOKUP(1,-LEFT(A1,{1;2;3;4;5}))
转换为:
=-LOOKUP(0,-{"1″;"12″;"12J";"12JU";"12JUN"})
此时会转换为:
=-LOOKUP(0,{-1;-12;#VALUE!;#VALUE!;-43994})
这是因为当Excel强制将“12JUN”转换为数字时,它假定日期为“2020-6-12”,因此会进行转换。
将相应的序列号写入该日期。
此时LOOKUP函数返回-43994。
当然,这并不是唯一会发生这种情况的字符串。
事实上,任何可以被Excel解释为日期的字母数字字符都是诸如30SEP、01FEB等,这也会产生不正确的结果。
另外,公式1对于123E3这种形式的字符串无效,结果为123000。
因为一般情况下,在单元格中输入123E3后,Excel会自动将其转换为科学计数法格式。
LEFT和COUNT
公式2:
=0+LEFT(A1,COUNT(0+MID(A1,ROW(INDIRECT("1:")&LEN(A1))),1)))
这是一个数组公式。
例如,我们以单元格A1中的数据为“123ABC”。
公式2可转换如下:
=0+LEFT(A1,COUNT(0+MID(A1,{1;2;3;4;5;6},1)))
转换为:
=0+LEFT(A1,COUNT(0+{"1″;"2″;"3″;"A";"B";"C"}))
转换为:
=0+LEFT(A1,COUNT({1;2;3;#VALUE!;#VALUE!;#VALUE!}))
COUNT函数忽略错误值并得到:
=0+LEFT(A1,3)
结果为:
123
接下来试试公式2看看如果它可以处理数字位于字符串开头以外的位置的情况。
例如,如果单元格A1中的数据为“123ABC45”,则公式2可以转换为:
=0+LEFT(A1,COUNT(0+MID(A1,{1;2;3);4;5;6;7;8},1)))
转换为:
=0+LEFT(A1,COUNT(0+{“1”);"2";"3";"A";"B";"C";"4";"5"}))
转换为:
=0+LEFT(A1,COUNT({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}))
转换将:
=0+LEFT(A1,5)
转换为:
=0+“123AB”
结果是:
#VALUE!
原因是字符串末尾还有其他数字,所以COUNT函数统计的数字个数大于数字位于字符串的开头,因此LEFT值仍然是混合字母数字字符串。
LEFT、MATCH和ISNUMBER
公式3:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER(0+MID(A1,ROW(INDIRECT(“1:”&LEN(A1))),1)),0)-1)
这是一个数组公式。
如果单元格A1中的数据仍然是“123ABC”,则公式3可以转换如下:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER({1;2;3;#VALUE!;#VALUE!;#VALUE!}),0)-1)
对于ISNUMBER函数,如果传递给它的错误值是错误值,则返回FALSE,所以上面的公式可以转换为:
=0+LEFT(A1,MATCH(FALSE,{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果为:
123
公式3中为MATCH/ISNUMBER组合确保字符串开头以外的数字不会影响最终结果。
例如,如果单元格A1中的数据为“123ABC45”,则公式3可以转换如下:
=0+LEFT(A1,MATCH(FALSE,ISNUMBER({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}),0)-1)
转换于:
=0+LEFT(A1,MATCH(FALSE,{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果是::
123
LEFT、MATCH和ISERR
结构正确与式3一致。
唯一的区别是使用ISERR函数而不是ISNUMBER函数,并强制返回数字数组。
公式4:
=0+LEFT(A1,MATCH(1,0+ISERR(0+MID(A1,ROW(INDIRECT("1:"&LEN(A1))))),1)),0)-1)
这是一个数组公式。
如果单元格A1中的数据仍然是“123ABC”,则公式4可以转换如下:
=0+LEFT(A1,MATCH(1,0+ISERR({1;2;3;#VALUE!;#VALUE!;#VALUE!;4;5}),0)-1)
转换于:
=0+LEFT(A1,MATCH(1,0+{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;FALSESE},0)-1)
转换为:
=0+LEFT(A1,MATCH(1,{0;0;0;1;1;1;0;0},0)-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,4-1)
转换为:
=0+LEFT(A1,3)
结果为:
123
与公式3一样,其他数字中存在的数字分割除开头数字以外的字符串不会影响结果。
提取字符串中的数字
从字符串中提取数字:您可以使用正则表达式或其他字符串处理函数从字符串中提取数字。例如,字符串为“1abc2def3ghi”,可以使用正则表达式将其转换为[1,2,3],从而提取字符串中的数字。
扩展:此外,您还可以使用一些字符串操作函数(如split、find等)来提取字符串中的数字。
这可以通过解析字符串中的每个字符并在必要时将其转换为数字来完成。
相关文章

入门级C语言:最简单Hello, Wor...
2024-12-28 22:31:49
深入解析:双引号与单引号的字符串区别及P...
2024-12-26 22:01:45
C语言成绩输入与平均计算及C数字逆序输出...
2024-12-17 09:00:53
c语言do while
2025-01-06 02:10:29
C语言中‘C’的由来与含义揭秘
2025-02-21 12:39:57
C语言进阶:类型转换解析与算法实现技巧
2024-12-14 14:29:22
深入解析:C语言中的C及其编程奥秘
2025-03-13 17:32:17
C语言基础:深入解析pinMode(i,...
2024-12-15 16:49:45
C语言字符串定义方式详解:变量与常量区分...
2024-12-15 14:44:35