gpt4 book ai didi

Javascript,查找字符串中最大的数字序列

转载 作者:行者123 更新时间:2023-11-28 07:51:10 25 4
gpt4 key购买 nike

在Javascript中,我试图创建一个函数来查找字符串中最长的数字并将其转换为浮点值。但是,当我输入诸如 ff333sds22442 之类的内容时,它应该输出 22442 时却输出“333”作为最长的数字。

<input type="text" id="numberInput"></input>
<button onclick="findNumber()"> Find Number </button>
<button onclick="makeSubstring()"> Make Substring </button>
<p id="number"></p>

<script>

function findNumber() {
var input = document.getElementById("numberInput").value;
var longest = "";
var result = "";
var inputSub = "";

for (var i = 0; i < input.length; i++) {
for (var j = i + 1; j < input.length; j++) {

inputSub = input.substring(i, j + 1);
if (!isNaN(parseFloat(inputSub)) && inputSub.length > longest.length){
longest = inputSub;
result = inputSub;
}
}
}

result = parseFloat(result);
document.getElementById("number").innerHTML = result;
}

我不知道为什么要这样做,我希望有人可以向我解释一下。

最佳答案

此方法无法正常工作的原因是您正在测试 parseFloat(inputSub) 是否为 NaN。这不起作用,因为 parseFloat('333sds') 将返回 333,而不是 NaN

documentation for parseFloat 包含更严格的解析函数,您可以使用它来修复函数中的错误:

var filterFloat = function (value) {
if(/^(\-|\+)?([0-9]+(\.[0-9]+)?|Infinity)$/
.test(value))
return Number(value);
return NaN;
}

console.log(filterFloat('421')); // 421
console.log(filterFloat('-421')); // -421
console.log(filterFloat('+421')); // 421
console.log(filterFloat('Infinity')); // Infinity
console.log(filterFloat('1.61803398875')); // 1.61803398875
console.log(filterFloat('421e+0')); // NaN
console.log(filterFloat('421hop')); // NaN
console.log(filterFloat('hop1.61803398875')); // NaN

关于Javascript,查找字符串中最大的数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com