JavaScript第六讲:“数字,字符串”对象及练习题

前言

在编程的世界里,JavaScript 是一种极其强大且灵活的编程语言,广泛应用于前端开发,后端开发,甚至全栈开发。无论是对于初学者还是经验丰富的开发者,掌握 JavaScript 的基础知识都是至关重要的。今天星途带大家深入理解 JavaScript 中的两个核心数据类型:数字和字符串。

数字和字符串是编程中不可或缺的元素,它们几乎在所有的程序中都有应用。了解如何创建、操作和处理这些数据类型,是编写高效、准确代码的关键。在本文中,我们将从创建对象、获取长度、访问特定位置的元素、拼接、查找、比较、截取、转换、替换等基本操作入手,通过详细的代码示例和解释,让读者能够轻松掌握 JavaScript 中数字和字符串的使用技巧。已经学过的大佬们可以收藏当笔记看

数字

1. 创建一个数字对象

在JavaScript中,通常我们不直接创建一个数字对象,因为JavaScript提供了基本数据类型Number。但是,如果你确实想通过Object构造函数来创建一个数字对象(这通常不推荐,因为它不如基本类型高效),你可以这样做:

// 创建一个数字对象(不推荐)  
var numberObject = new Number(123);  
  
// 通常我们使用基本类型  
var numberPrimitive = 123;  
  
console.log(numberObject); // 输出:Number {123}  
console.log(numberPrimitive); // 输出:123

2. 最小值 最大值

JavaScript的Number对象提供了MIN_VALUEMAX_VALUE属性,但实际上这两个属性描述的是能够保持精度的最小正数和能够表示的最大正数(不是JavaScript能够表示的最大和最小整数)。对于整数范围,JavaScript使用53位二进制浮点数形式(IEEE 754),其整数范围是-9007199254740991 (-2^53 + 1)9007199254740991 (2^53 - 1)

但是,你可以使用Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER来获取JavaScript安全整数范围的最小值和最大值。

console.log(Number.MIN_SAFE_INTEGER); // 输出:-9007199254740991  
console.log(Number.MAX_SAFE_INTEGER); // 输出:9007199254740991

3. 表示不是数字

JavaScript有一个特殊的值NaN(Not a Number),用于表示非数字值。NaN与任何值(包括它自身)的比较结果都是false

var notANumber = NaN;  
console.log(notANumber === NaN); // 输出:false  
  
// 判断一个值是否是NaN  
console.log(isNaN(notANumber)); // 输出:true

4. 返回一个数字的小数表达

数字在JavaScript中默认就是小数表达的(除非它们是整数)。但如果你想确保一个小数总是以固定的小数位数显示,可以使用toFixed()方法。

var num = 123.456789;  
console.log(num.toFixed(2)); // 输出:"123.46"

5. 返回一个数字的科学计数法表达

使用toExponential()方法可以将数字转换为科学计数法表达。

var num = 123456789;  
console.log(num.toExponential(2)); // 输出:"1.23e+8"

6. 返回一个数字对象的基本数字类型

如果你有一个数字对象,并且想要获取它的基本数字值,你可以通过类型转换(比如使用一元加号+)或者直接调用它的valueOf()方法。

var numberObject = new Number(123);  
var numberPrimitive = +numberObject; // 或者 numberObject.valueOf();  
  
console.log(numberPrimitive); // 输出:123

注意:通常建议使用基本类型(如var num = 123;)而不是数字对象(如var num = new Number(123);),因为基本类型在JavaScript中更加高效,且不容易引起混淆。

字符串

1. 创建字符串对象

在JavaScript中,我们通常不直接通过new String()构造函数来创建字符串对象,因为JavaScript提供了字符串字面量(string literals)作为更简洁和常用的方式来创建字符串。但是,为了说明这一点,我们还是可以使用构造函数:

// 使用字符串字面量  
var strLiteral = "Hello, World!";  
  
// 使用String构造函数(通常不推荐)  
var strObject = new String("Hello, World!");  
  
console.log(strLiteral); // 输出: "Hello, World!"  
console.log(strObject); // 输出: String {"Hello, World!"}

2. 字符串长度

可以使用length属性来获取字符串的长度:

var str = "Hello, World!";  
console.log(str.length); // 输出: 13

3. 返回指定位置的字符

可以使用方括号[]或charAt()方法获取指定位置的字符(索引从0开始):

var str = "Hello, World!";  
console.log(str[0]); // 输出: "H"  
console.log(str.charAt(7)); // 输出: "W"

4. 字符串拼接

可以使用加号+来拼接字符串:

var str1 = "Hello, ";  
var str2 = "World!";  
var strConcat = str1 + str2;  
console.log(strConcat); // 输出: "Hello, World!"

5. 子字符串出现的位置

可以使用indexOf()或lastIndexOf()方法来查找子字符串首次或最后一次出现的位置:

var str = "Hello, World!";  
console.log(str.indexOf("World")); // 输出: 7  
console.log(str.lastIndexOf("o")); // 输出: 8(因为从右往左数,"o"最后一次出现在索引8)

6. 比较两段字符串是否相同

可以使用==或===操作符来比较两个字符串是否相同:

var str1 = "Hello, World!";  
var str2 = "Hello, World!";  
var str3 = "Hello, Universe!";  
  
console.log(str1 == str2); // 输出: true  
console.log(str1 === str2); // 输出: true  
console.log(str1 == str3); // 输出: false

7. 截取一段子字符串

可以使用substring()、slice()或substr()方法来截取子字符串:

var str = "Hello, World!";  
console.log(str.substring(0, 5)); // 输出: "Hello"  
console.log(str.slice(7, 12)); // 输出: "World"  
// 注意:substr()方法已被废弃,不建议使用

8. 根据分隔符,把字符串转换为数组

可以使用split()方法根据指定的分隔符将字符串转换为数组:

var str = "apple,banana,orange";  
var arr = str.split(",");  
console.log(arr); // 输出: ["apple", "banana", "orange"]

9. 替换子字符串

可以使用replace()方法来替换子字符串:

var str = "Hello, World!";  
var newStr = str.replace("World", "Universe");  
console.log(newStr); // 输出: "Hello, Universe!"  
// 注意:replace()方法默认只替换第一个匹配的子字符串

10. 返回基本类型

如果你有一个String对象,并想要获取它的基本字符串值,你可以直接访问它(因为String对象与它的原始值在大多数情况下是等价的),或者可以使用toString()方法或valueOf()方法(尽管对于String对象来说,这两个方法返回的都是相同的原始字符串值):

var strObject = new String("Hello, World!");  
var strPrimitive = strObject.toString(); // 或者 strObject.valueOf()  
  
console.log(strPrimitive === strObject); // 输出: true(因为String对象与它的原始值相等)

但是,通常我们不会使用new String()来创建字符串,而是直接使用字符串字面量。在大多数情况下,直接使用基本类型字符串会更简单、更直观,且性能更好。

练习题

编写一个 JavaScript 程序,该程序要求用户输入两个字符串:str1str2。程序需要完成以下任务:

  1. 验证两个字符串的长度是否相等。
  2. 如果长度相等,找出两个字符串中第一个不相同的字符的索引(从0开始计数)。
  3. 如果两个字符串完全相同,输出 "The strings are identical."。
  4. 如果两个字符串长度不等,或者找到第一个不相同的字符,输出 "The strings are not identical. First different character at index: [index]."
  5. 接下来,将 str2 中的所有 "apple" 子串替换为 "orange",并输出替换后的 str2

源代码(先自己做完再看,效果更好)

// 获取用户输入的两个字符串  
var str1 = prompt("请输入第一个字符串:");  
var str2 = prompt("请输入第二个字符串:");  
  
// 验证两个字符串的长度是否相等  
if (str1.length === str2.length) {  
    // 如果长度相等,找出第一个不相同的字符的索引  
    for (var i = 0; i < str1.length; i++) {  
        if (str1[i] !== str2[i]) {  
            console.log("The strings are not identical. First different character at index: " + i);  
            break;  
        }  
    }  
    // 如果循环结束都没有找到不同的字符,说明两个字符串完全相同  
    if (i === str1.length) {  //“三等于号”在前两讲的运算符讲到过,忘记的可以看一下
        console.log("The strings are identical.");  
    }  
} else {  
    // 如果长度不等,直接输出信息  
    console.log("The strings are not identical. Lengths are different.");  
}  
  
// 替换 str2 中的 "apple" 为 "orange"  
var replacedStr2 = str2.replace(/apple/g, "orange");  //g是全局搜索
  
// 输出替换后的 str2  
console.log("Replaced string:", replacedStr2);

说明

这个练习题包含了字符串长度的比较、字符的遍历比较、以及字符串的替换操作。用户输入两个字符串后,程序会先检查它们的长度是否相等,如果相等则逐个字符比较,找出第一个不相同的字符的索引。如果字符串完全相同,则输出相应的信息。如果长度不等或找到不同的字符,则输出第一个不同字符的索引。最后,程序将 str2 中的所有 "apple" 子串替换为 "orange",并输出替换后的字符串。

结语

通过本文的学习,相信读者已经对 JavaScript 中的数字和字符串有了更深入的理解。我们介绍了如何创建这两种类型的对象,如何获取它们的长度,如何访问和修改它们的特定部分,以及如何进行字符串的拼接、查找、比较、截取、转换和替换等操作。这些基础知识不仅对于初学者来说至关重要,对于想要进一步提高编程能力的开发者来说也是不可或缺的。

希望本文能够为您在 JavaScript 编程的道路上提供有益的帮助。记住,实践是检验真理的唯一标准。在掌握了这些基础知识之后,不妨多动手实践,通过编写代码来加深理解。随着经验的积累,您将能够更加熟练地运用 JavaScript,编写出更加高效、准确的代码。祝您在编程的道路上越走越远!

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值