【问题标题】:Check if the last char is dot (.)检查最后一个字符是否为点 (.)
【发布时间】:2020-01-27 09:25:36
【问题描述】:

我需要检查输入 (type="number") 值的最后一个字符是否为点!

这些都试过了,还是不行:

let amount = $("#amount").val();
let last_char = amount.slice(-1);
if(last_char == ".")
{
    return;
}

也试过amount[amount.length-1]charAt()

附:输入类型为type="number"

编辑:

所有答案均无效:https://jsfiddle.net/dne37hao/

【问题讨论】:

标签: javascript jquery


【解决方案1】:

const string = 'Is this a question.';

console.log(string.endsWith('.'));

【讨论】:

    【解决方案2】:

    您可以使用不同的方式实现这一目标,但性能不同,

    1.使用括号表示法:

    var str = "Test";
    var lastLetter = str[str.length - 1];
    

    但不建议使用括号。

    2. charAt[index]:

    var lastLetter = str.charAt(str.length - 1)
    

    这是可读且最快的。这是最推荐的方式。

    3. 子字符串:

    str.substring(str.length - 1);

    4. 切片:

    if(str.slice(-1)=== '.'){
    return true
    }
    

    比substring稍微快一点。效率最高的一个

    使用 ES6:

    你可以使用str.endsWith("t");

    【讨论】:

    • 这不能回答 OP 的问题
    • @adiga 你能详细说明一下吗?它怎么不回答他的问题。我列出了 4 种不同的方法以及示例和性能。
    • 问题是由输入中的type="number"引起的。 .val() 将忽略尾随点。检查小提琴。
    【解决方案3】:

    你可以试试这个:

    let amount = $("#amount").val();
    if(amount[amount.length-1] === "."){
       return true;
    }
    

    【讨论】:

    • 你在金额变量中得到什么值?
    • 例如:1. 36. 它不会跳过这些。输入类型也是数字
    • 所以 jquery .val() 方法返回字符串,javascript 将数字转换为字符串并忽略 .到底。因此,如果您在控制台中打印数量,它最后永远不会显示点(。),将输入类型更改为文本,然后您可以检查输入是否最后有一个点。
    • javascript中数字不能以点结尾,javascript基本忽略。在数字的末尾
    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 2020-07-15
    • 2013-01-06
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多