字符串和数组常用方法整理

字符串方法

  1. 获取字符串某位字符

[] === charAt

let str = "abcdefg";
console.log(str[0]);//"a"
console.log(str.charAt(1));//"b"
复制代码
  1. 获取字符串长度

str.length

let str = "abcdefg";
console.log(str.length);//7
console.log(str[str.length-1]);//"g"
复制代码
  1. 查找某个字符,有则返回第一次匹配到的位置,否则返回-1

indexOf()

let str = "abcdefg";
console.log(str.indexOf("a"));//0
console.log(str.indexOf("z"));//-1
复制代码
  1. 将字符转换为ascll码值以及将ascll码值转换为字符

charCodeAt()String.fromCharCode()

let str = "abcdefg";
console.log(str.charCodeAt(0));//"a" --> 97
console.log(String.fromCharCode(97));//97 --> "a"
复制代码
  1. 字符串拼接

concat()

let str = "abc";
console.log(str.concat("efg"));//"abcefg"
console.log(str.concat("efg","hijk"));//"abcefghijk"
复制代码
  1. 字符串切割
  • slice()
  • substring()
  • substr()
let str = "abcdefg";
/*slice*/
console.log(str.slice(1,6));//"bcdef" [1,6)
console.log(str.slice(1)); //"bcdefg" [1,str.length-1]
console.log(str.slice());//"abcdefg" [0,str.length-1]
console.log(str.slice(-2));//"fg"
console.log(str.slice(6, 1));//""
/*
slice只传两个值个值,则表示左闭右开,不包括结束位置的值
传入一个值,则表示,才起始位开始,把字符串切割完
不传值,则切割整个字符串
也可以传入负数,字符串倒数第一位为-1
*/
/*substring*/
console.log(str.substring(1,6));//"bcdef" [1,6)
console.log(str.substring(1)); //"bcdefg" [1,str.length-1]
console.log(str.substring());//"abcdefg" [0,str.length-1]
console.log(str.substring(6,1));//"bcdef" [1,6)
console.log(str.substring(-1));//"abcdefg"
/*
用法和slice基本相同,只不过substring,传入的第一个值比第二个值大
时,默认会进行从小值切到大值的处理
以及传入负数,会切割整个字符串
*/

/*substr(start,length)*/
console.log(str.substr(1,6));//"bcdefg" 6代表切割的length
console.log(str.substr(1)); //"bcdefg" [1,str.length-1]
console.log(str.substr());//"abcdefg" [0,str.length-1]
console.log(str.substr(-1));//"g"

/*
substr 第一个参数表示开始切割的起始位置
第二个参数表示切割的长度
传一个值和不传值的表现和slice相同
也可以传入负值
*/
复制代码
  1. 字符串转换大小写
  • toUpperCase()
  • toLowerCase()
let str1 = "adABDndj";
console.log(str1.toUpperCase());//"ADABDNDJ"
console.log(str1.toLowerCase());//"adabdndj"
复制代码
  1. 切割字符串返回数组

split()此方法和数组的arr.join()对照着讲

注意:字符串的所有方法,都不会改变字符串本身

数组方法

  1. 数组的取值

数组使用下标取值[idx]

let arr = [1,2,3,4];
console.log(arr[1]);//2
复制代码
  1. 数组的拼接

arr.concat()

let arr = [1,2,3];
console.log(arr.concat([4,5,6],[7,8,9]));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
复制代码
  1. 获取数组的长度

arr.length

  1. 使用slice进行数组的切割

用法和字符串相同

let arr = [1,2,3,4,5,6,7,8];
console.log(arr.slice(1,6));//[2, 3, 4, 5, 6] [1,6)
console.log(arr.slice(1)); //[2, 3, 4, 5, 6, 7, 8] [1,arr.length-1]
console.log(arr.slice());//[1, 2, 3, 4, 5, 6, 7, 8] [0,arr.length-1]
console.log(arr.slice(-2));//[7, 8]
console.log(arr.slice(6, 1));//[]
复制代码
  1. indexOf查找
let arr = [1,2,3,4,5,6,7,8];
console.log(arr.indexOf(8));//7
console.log(arr.indexOf(10));//-1
复制代码
  1. 往数组里面添加或删除数据
  • push往数组末尾添加数据
  • unshift往数组开头添加数据
  • pop删除数组末尾的数据
  • shift删除数组开头第一个数据
let arr = [1,3,4,5];
arr.push("a",6);
console.log(arr);//[1,3,4,5,"a",6];
arr.pop();
console.log(arr);//[1,3,4,5,"a"];
arr.unshift(2);
console.log(arr);//[2,1,3,4,5,"a"];
arr.shift();
console.log(arr);//[1,3,4,5,"a"];

复制代码
  1. arr.splice()可以实现上述四个方法的所有功能
  • 参数1 指定添加或者删除开始的索引
  • 参数2 指定删除的length(必须 该值为0,表示不删除任何元素)
  • 参数3及之后的参数 表示要添加的数据(可选)
let arr = [1,3,4,5];
arr.splice(0,0,"12");//===arr.unshift("12");
console.log(arr);//["12", 1, 3, 4, 5]
arr.splice(0,1);//=== arr.shift();
console.log(arr);//[1, 3, 4, 5]
arr.splice(arr.length,0,"a");//===arr.push("a");
console.log(arr);//[1, 3, 4, 5, "a"]
arr.splice(arr.length-1,1);//===arr.pop();
console.log(arr);//[1, 3, 4, 5]
复制代码
  1. 数组的排序(一般用于number类型的数据)

arr.sort()

let arr = [97,3,67,42,100,21];
//升序排序
arr.sort((a,b)=>a-b);
console.log(arr);//[3, 21, 42, 67, 97, 100]
//降序排序
arr.sort((a,b)=>b-a);
console.log(arr);//[100, 97, 67, 42, 21, 3]
复制代码
  1. 数组拼接成字符串

arr.join()

let arr = [1,23,4,45,5];
let str = arr.join("-");
console.log(str);//"1-23-4-45-5"

//字符串切割成数组
let arr1= str.split("-");//参数表示以什么字符为界限切割字符串
console.log(arr1);//["1", "23", "4", "45", "5"]
复制代码
  1. 数组反序

arr.reverse()

let arr = [1,3,4,5,6,7];
arr.reverse();
console.log(arr);//[7, 6, 5, 4, 3, 1]

复制代码

注意:数组中和字符串同名的方法,还有外加一个join()都不改变原数组

<think>嗯,用户想知道如何在PHP中将字符串截取并转换为数组。首先,我需要回忆PHP中处理字符串和数的相关函数。记得PHP有explode函数,可以根据分隔符分割字符串数组,比如用逗号分隔的字符串转成数组。另外,可能还有str_split函数,可以按指定长度分割字符串,比如每个字符作为一个元素或者每两个字符一个元素。 然后,用户提到了“截取”,可能还涉及到字符串的截取操作,比如substr函数,用来获取字符串的一部分。不过用户想要的是截取后转成数组,可能需要结合使用substrstr_split?或者是否有更直接的方法? 接下来,我需要检查是否有其他方法,比如使用preg_split进行正则表达式分割,这样更灵活,但可能对于简单的情况来说有点复杂。另外,可能还有直接通过字符串索引访问,但PHP中字符串不能像数组那样直接通过索引访问,不过可以使用大括号或者方括号来获取单个字符,例如$str[0]。但如何将整个字符串拆分成单个字符的数组呢?这时候str_split($str, 1)就可以做到。 然后,用户可能还关心如何处理多字节字符,比如中文,这时候mb_substr或者mb_split可能需要用到,但常规的explodestr_split在处理多字节时可能会有问题。不过用户的问题中没有特别提到多字节,可能暂时不需要考虑,但最好提一下注意事项。 现在需要整理步骤:首先,使用explode按分隔符分割;其次,使用str_split按固定长度分割;然后,使用substr截取部分字符串后再转数组;还可以提到使用preg_split进行复杂分割。同时,给出每个方法的示例代码,并说明适用场景。 还需要注意PHP版本的兼容性,比如str_split在PHP5及以上可用,explode一直存在。可能用户需要的是基本方法,所以重点放在常用函数上。同时,引用相关的参考资料,比如站内的引用可能涉及其他语言的数组操作,但PHP中类似方法需要对应到PHP的函数。 最后,生成相关问题,比如如何处理多字节字符串,或者如何合并数组字符串,以及性能比较等。</think>在PHP中实现字符串截取并转换为数组,可通过以下方法实现: ### 一、使用 explode() 分割字符串 这是最常用字符串数组方法,通过指定分隔符分割字符串: ```php $str = "apple,banana,orange"; $arr = explode(",", $str); // ["apple","banana","orange"] ``` 特别用法:获取前N个元素 ```php $limited_arr = explode(",", $str, 2); // ["apple","banana,orange"] ``` ### 二、使用 str_split() 按长度分割 将字符串按固定长度切割成数组: ```php $str = "hello"; $arr = str_split($str, 2); // ["he","ll","o"] ``` 单字符分割: ```php $char_arr = str_split($str); // ["h","e","l","l","o"] ``` ### 三、结合 substr() 实现截取后转换 先截取子串再转换: ```php $str = "abcdefgh"; $substring = substr($str, 2, 4); // "cdef" $arr = str_split($substring, 2); // ["cd","ef"] ``` ### 四、正则表达式分割(preg_split) 处理复杂分割场景: ```php $str = "a1b22c333"; $arr = preg_split("/\d+/", $str); // ["a","b","c",""] ``` ### 五、直接索引访问(伪数组) PHP字符串支持类数组访问: ```php $str = "test"; echo $str[1]; // "e" ``` **注意事项**: 1. 多字节字符串处理需使用mb_系列函数 2. substr()参数:substr(string,start[,length]) 3. 字符串索引从0开始 ```php // 完整示例 $original = "data1;data2;data3"; $sliced = substr($original, 5); // "data2;data3" $result = explode(";", $sliced); // ["data2","data3"] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值