XPath的number()函数将参数转为数字,字符串会忽略首尾空格解析,非数字字符或格式错误返回NaN;布尔值true转1、false转0;节点集取首个节点字符串值转换。对含千位符、货币符号等非标准格式返回NaN,常见陷阱包括非数字字符、多小数点、空节点集等。实际查询中用于数值比较,如//product[number(@price)>500],实现精确筛选。

XPath的
number()
NaN
number()
0
NaN
number('123')123
number(' 45.67 ')45.67
number('')0
number(' ')0
number('hello')NaN
number('123a')NaN
number('1,000')NaN
number('$100')NaN
true()
1
false()
0
number(true())
1
number(false())
0
NaN
<price>99.99</price>
number(/root/price)
99.99
<item>Free</item>
number(/root/item)
NaN
这其实是
number()
举个例子,如果你有一个价格字符串是"1,234.56"(带千位分隔符),或者"€100.00"(带货币符号),甚至是"12.3.4"(多个小数点),
number()
NaN
所以,当你在XPath里遇到需要把这类“非标准”数字字符串转换成数字时,你可能需要一些预处理。比如,如果你在XSLT环境里,可以先用
translate()
number()
NaN
number()
NaN
price="一百元"
quantity="5 units"
"1 23"
NaN
number('abc')NaN
number('100 units')NaN
number('1 2 3')NaN
"1.2.3"
"1,000"
"$50"
number()
number()
NaN
number(//nonexistent-node)
NaN
<data></data>
number(//data)
0
<data> </data>
number(//data)
0
<data>Hello</data>
number(//data)
NaN
要判断一个
number()
NaN
not(number() = number())
NaN
fn:empty()
fn:not(fn:number() = fn:number())
fn:isNaN()
number()
想象一下,你有一堆产品列表,它们的库存数量或者价格都是以字符串属性的形式存在的,比如
<product name="Laptop" price="999.99" stock="50"/>
@price > '500'
number()
//product[number(@price) > 500]
这会把
@price
再比如,你想筛选出库存量大于0的产品:
//product[number(@stock) > 0]
甚至更进一步,如果你知道某些库存数据可能是不规范的,比如有
"N/A"
number()
NaN
NaN
NaN > 0
NaN < 0
not(number() = number())
NaN
number() > 0
NaN
false
可以说,
number()
以上就是XPath的number()函数如何转换字符串为数字?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号