JavaScript 4步判断指定字符串是否为有效数字实例

本文提供了JavaScript函数用于判断输入字符串是否为数字、整数或浮点数,并包含了一个去除字符串前后空格的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.判断是否为数字

function BASEisNotNum(theNum)
{
//判断是否为数字
if (BASEtrim(theNum)=="")
return true;
for(var i=0;i<theNum.length;i++){
oneNum=theNum.substring(i,i+1);
if (oneNum<"0" || oneNum>"9")
return true;
}
return false;
} 

2.判断是否为整数

function BASEisNotInt(theInt)
{
//判断是否为整数
theInt=BASEtrim(theInt);
if ((theInt.length>1 && theInt.substring(0,1)=="0") || BASEisNotNum(theInt)){
return true;
}
return false;
} 

3.判断是否为浮点数

function BASEisNotFloat(theFloat)
{
//判断是否为浮点数
len=theFloat.length;
dotNum=0;
if (len==0)
return true;
for(var i=0;i<len;i++){
oneNum=theFloat.substring(i,i+1);
if (oneNum==".")
dotNum++;
if (((oneNum<"0" || oneNum>"9") && oneNum!=".") || dotNum>1)
return true;
}
if (len>1 && theFloat.substring(0,1)=="0"){
if (theFloat.substring(1,2)!=".")
return true;
}
return false;
} 

4.去掉空格

function BASEtrim(str)
{
//去掉空格
lIdx=0;rIdx=str.length;
if (BASEtrim.arguments.length==2)
act=BASEtrim.arguments[1].toLowerCase();
else
act="all";
for(var i=0;i<str.length;i++){
thelStr=str.substring(lIdx,lIdx+1);
therStr=str.substring(rIdx,rIdx-1);
if ((act=="all" || act=="left") && thelStr==" "){
lIdx++;
}
if ((act=="all" || act=="right") && therStr==" "){
rIdx--;
}
}
str=str.slice(lIdx,rIdx);
return str;
} 

原文地址: http://www.xz-src.com/5345.html
### 使用 `instanceof` 判断字符串类型的分析 在 JavaScript 中,`instanceof` 是一种用于检测某个对象是否属于特定构造函数实例的运算符。然而,对于基本数据类型(如字符串、数字等),它并不直接适用,因为这些类型并非通过构造函数创建的对象。 #### 基本原理 当尝试使用 `instanceof String` 来判断一个值是否字符串时,只有那些由 `new String()` 创建的对象才会返回 `true`[^3]。而对于普通的字面量字符串(例如 `"hello"` 或 `'world'`),由于它们不是通过 `String` 构造器显式创建的,因此会返回 `false`。 ```javascript console.log("hello" instanceof String); // false const strObj = new String("hello"); console.log(strObj instanceof String); // true ``` 这是因为字面量形式的字符串实际上是原始值而非真正的对象,在内部实现上与通过构造器生成的对象存在差异。 #### 替代方案 如果目标是全面而准确地区分字符串类型,则需结合其他方法共同完成此任务: 1. **利用 `typeof`** 对于简单快速的基础类型识别来说非常有效。 ```javascript console.log(typeof "hello"); // string ``` 2. **采用更精确的方式——调用内置原型链上的 `.toString()` 方法** 此方式能够覆盖更多场景并提供一致的结果输出。 ```javascript function isString(value){ return Object.prototype.toString.call(value) === '[object String]'; } console.log(isString("hello")); // true console.log(isString(new String("a"))); // true console.log(isString(12)); // false ``` 上述代码片段定义了一个通用型辅助工具函数 `isString` ,它可以正确区分不同情况下的输入参数到底是不是合法意义上的“字符串”。 --- ### 结论 综上所述,虽然可以直接运用 `value instanceof String` 形式的语法结构来进行初筛查,但由于其局限性较大,推荐优先选用基于 `Object.prototype.toString.call()` 的解决方案作为最终判定依据[^1][^2]。 ```javascript function getType(data) { return Object.prototype.toString.call(data).slice(8, -1); } // 测试案例 console.log(getType("test") === 'String'); // true console.log(getType(new String("test")) === 'String'); // true console.log(getType(123) === 'Number'); // true ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值