前言
嘿,你听说过JavaScript中的字符串吗?哦,别以为这只是一串乏味的字符堆积,它可比你想象的要有趣多了!
想象一下,JavaScript的字符串就像是一群充满个性的小伙伴,每个都有着自己独特的特点和魅力。有的字符串像是那个总是笑眯眯的邻家小妹,每次看到她都会让你觉得心情格外舒畅。而有的字符串则像是那个爱玩捉迷藏的调皮小鬼,你永远不知道下一秒会跳出来给你惊喜。
在JavaScript的字符串世界里,你会遇到各种各样的"奇葩"情况。有时候,它们会变成一条龙,从头到尾游走在你的代码中;有时候,它们会搞起了"串串"大会,一串串地连接在一起,形成一段段有趣的文字。
但别小看这些字符串,它们可不仅仅是一堆字母和符号的简单组合。在JavaScript的世界里,字符串可以是你的好朋友,帮你记录下重要的信息;也可以是你的武器,帮你战胜bug的侵袭。
有时候,你会发现自己在为字符串的"拼拼乐"而欢乐不已;有时候,你又会因为字符串的"调调皮"而捉摸不透。但不管怎样,这些字符串都是JavaScript编程中不可或缺的一部分,它们时而温柔,时而狡猾,但绝对不会让你感到无聊!
所以,当你再次遇到JavaScript中的字符串时,不妨对它们多一些耐心,多一些理解,也许你会被它们的幽默和趣味所折服,甚至成为它们的忠实粉丝呢!
1.初识字符串
首先我们来认识一下字符串中的基本方法,
- charAt()查找字符串某一个位置的字符
- 可以当成数组一样使用
- 字符串拼接
- 字符串转数组split('')括号内代表通过什么分开
- 数组转字符串join('')括号内代表通过什么拼接
- slice截取字符串,左闭右开
我们可以自行打印上述代码观看结果来印证我们的猜想。
那么除了可以将字符串转化为数组来删除字符串中的某个元素,我们也可以手搓一个算法来操作。
这个最后的打印结果是el,是左闭右开的。截取字符串。
2.leetCode344
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组
s
的形式给出。
不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。
示例 1:
css
输入: s = ["h","e","l","l","o"]
输出: ["o","l","l","e","h"]
示例 2:
css
输入: s = ["H","a","n","n","a","h"]
输出: ["h","a","n","n","a","H"]
提示:
1 <= s.length <= 105
s[i]
都是 ASCII 码表中的可打印字符
思路
- 使用两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置。
- 在循环中,交换这两个指针指向的元素,并将指针向中间移动。
- 当两个指针相遇时,数组的元素已经全部反转完成。
ini
function reverseString(s) {
let left = 0; // 左指针
let right = s.length - 1; // 右指针
while (left < right) {
// 交换左右指针所指向的元素
let temp = s[left];
s[left] = s[right];
s[right] = temp;
// 移动指针到下一个位置
left++;
right--;
}
}
// 示例
let s1 = ["h", "e", "l", "l", "o"];
reverseString(s1);
console.log(s1); // 输出:["o","l","l","e","h"]
let s2 = ["H", "a", "n", "n", "a", "h"];
reverseString(s2);
console.log(s2); // 输出:["h","a","n","n","a","H"]
-
定义了一个名为
reverseString
的函数,该函数接受一个字符串数组s
作为参数。 -
在函数内部,初始化了两个指针
left
和right
,分别指向数组的起始位置和末尾位置。 -
进入一个
while
循环,条件是left < right
,即左指针小于右指针时继续循环。 -
在循环中,通过交换左右指针所指向的元素来实现反转操作。具体操作是:
- 创建一个临时变量
temp
,用于存储左指针left
所指向的元素。 - 将右指针
right
所指向的元素赋值给左指针left
所在位置。 - 将临时变量
temp
中存储的元素值赋值给右指针right
所在位置。 - 这样就完成了左右指针所指向元素的交换。
- 创建一个临时变量
-
每完成一次交换,左指针向右移动一位(
left++
),右指针向左移动一位(right--
)。 -
当左右指针相遇时,表示数组的所有元素都已经完成了反转操作,此时退出循环。
-
最后,打印反转后的数组内容。
运行示例中的代码时,首先会对 s1
和 s2
进行原地反转操作,然后打印出反转后的数组内容。
3.小结
当处理 JavaScript 中的字符串时,以下是一些重要的要点:
- 不可变性:JavaScript 中的字符串是不可变的,这意味着一旦字符串被创建,就无法直接修改其内容。任何对字符串的操作都会返回一个新的字符串。
- 字符访问:可以通过索引来访问字符串中的单个字符,索引从 0 开始,类似于数组。
- 长度属性 :使用
length
属性可以获取字符串的长度,即其中包含的字符数。 - 字符串连接 :可以使用加号
+
运算符来连接字符串,也可以使用模板字符串(template literals)来实现字符串插值。 - 子串提取 :可以使用
substring()
、slice()
或者直接使用字符串的索引来提取字符串的子串。 - 字符串搜索 :可以使用
indexOf()
或lastIndexOf()
方法来搜索字符串中特定字符或子串的位置。 - 字符串替换 :使用
replace()
方法可以将字符串中的指定子串替换为新的内容。 - 大小写转换 :使用
toLowerCase()
和toUpperCase()
方法可以将字符串转换为小写或大写形式。 - 空白处理 :可以使用
trim()
方法去除字符串两端的空格,也可以使用split()
方法将字符串分割成子串数组,然后再进行处理。 - 字符串比较 :可以使用比较运算符(如
<
、>
)或者localeCompare()
方法来比较字符串的大小关系。