数组与字符串相互转换

一:数组转字符串(3种方法)

同样是数组转字符串,toString(),toLocaleString(),join(),join(‘,’)的区别是什么?

JS 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如下表。

数组方法说明
toString()将数组转换成一个字符串
toLocaleString()把数组转换成本地约定的字符串
join()将数组元素连接起来以构建一个字符串

1、join() —— 把数组中的所有元素放入一个字符串

元素是通过指定的分隔符进行分隔的

join()指定的分隔符说明
join()可理解为直接变成字符串,默认逗号分隔
join(‘ ‘)空连接
join(‘ ,’)或者 join(‘ – ‘)或者 join(‘ 。’)中间这个逗号是手动添加的,也可以改成别的比如、。! -等等都可以
// join()
let a= ["00", "01", "02", "03", "04"]
let b=  a.join()      
console.log(b)
//  00,01,02,03,04
console.log( typeof b)
// string

或者
// join('')
let a= ["00", "01", "02", "03", "04"]
let b=  a.join('')      
console.log(b)
//  0001020304
console.log( typeof b)
// string

或者
// join(',')
let a= ["00", "01", "02", "03", "04"]
let b=  a.join(',')      
console.log(b)
//  00,01,02,03,04

或者
// join('-')
let a= ["00", "01", "02", "03", "04"]
let b=  a.join('-')      
console.log(b)
//  00-01-02-03-04

或者
// join('!')
let a= ["00", "01", "02", "03", "04"]
let b=  a.join('!')      
console.log(b)
// 00!01!02!03!04

2、toString()方法可把一个逻辑值转换为字符串,并返回结果

let a= ["00", "01", "02", "03", "04"]
let c = a.toString();  //把数组转换为字符串
console.log(c)
// 00,01,02,03,04
console.log(typeof c);  //返回字符串string,说明是字符串类型

toString()方法不可以指定分隔符,但是我们可以通过replace()方法指定替换

let a= ["00", "01", "02", "03", "04"]
let f = a.toString().replace(/,/gi,'-')
console.log(f)
//打印结果:00-01-02-03-04

3、toLocaleString()

把数组转换成本地约定的字符串

let a= ["00", "01", "02", "03", "04"]
let e = a.toLocaleString();  
console.log(e) 
//打印结果:00,01,02,03,04

二:字符串转数组(2种方法)

字符串方法说明
split() 方法将字符串转换成一个数组
扩展运算符(…)es6里面的扩展运算符

1、split() 方法用于把一个字符串分割成字符串数组

同样是用于把一个字符串分割成字符串数组,split(‘,’),split(),split(‘ ‘)的区别是什么?

split()方法说明
split(‘,’)每个字符之间以逗号分隔
split()可理解为直接变成字符串,默认逗号分隔
split(‘ ‘) 空字符串每个字符之间都会被分割
let arr = 'aa,bb,cc,dd'
let newStr = arr.split(',')
console.log(newStr) 
// ["aa", "bb", "cc", "dd"]

let arr = 'aa,bb,cc,dd'
let newStr = arr.split()
console.log(newStr)
// ["aa,bb,cc,dd"]

如果把空字符串 (“”) 用作 separator,那么 stringObject 中的每个字符之间都会被分割

let arr = 'aa,bb,cc,dd'
let newStr = arr.split('')
console.log(newStr) 
// ["a", "a", ",", "b", "b", ",", "c", "c", ",", "d", "d"]

2、es6里面的扩展运算符

let arr = 'aa,bb,cc,dd'
let newStr = [...arr]
console.log(newStr) 
// ["a", "a", ",", "b", "b", ",", "c", "c", ",", "d", "d"]
<think>好的,用户想了解如何在字符数组字符串之间进行相互转换。我需要根据提供的引用资料,整理不同编程语言中的方法。 首先,查看每个引用中的信息。引用3、4、5分别提到了Java、C#和C++的方法,还有JS的引用2。我需要分语言整理,确保每个步骤清晰。 Java方面,引用3提到了两种方法:使用String构造函数和String.valueOf。需要详细说明这两种方式,并给出示例代码。同时,引用1中的ArrayUtils可能不是标准库,需要指出。 对于C#,引用4提到了三种方法:Join、Concat和new string。要说明每种方法的区别,并推荐使用构造方法。 C++的情况在引用5中,用string的构造函数将字符数组字符串,而字符串字符数组则需要逐个复制或使用c_str(),但要注意安全性。 JS方面,引用2提到join()方法,可以将数组元素连接成字符串,而字符串数组可以用split()。这部分需要补充进去,虽然用户没有直接问JS,但可能对其他语言用户有帮助。 还要注意不同语言之间的差异,比如Java和C#的构造函数使用方式不同。另外,要提醒用户注意字符数组的结束符,特别是在C++中使用gets_s的情况。 最后,确保回答结构清晰,分语言说明,每个方法都有示例,并引用对应的资料。可能还需要在相关问题中引导用户了解更多优化或应用场景。</think>### 字符数组字符串相互转换方法 #### 1. **Java** - **字符数组字符串** 1. **使用 `String` 构造函数** ```java char[] charArray = {'h', 'e', 'l', 'l', 'o'}; String str = new String(charArray); // 输出: hello ``` 2. **使用 `String.valueOf` 方法** ```java String str = String.valueOf(charArray); // 等同于 new String(charArray) ``` 3. **使用 `ArrayUtils.toString`(需第三方库)** ```java String str2 = ArrayUtils.toString(arr, ","); // 输出格式: {h,e,l,l,o} [^1] ``` - **字符串 → 字符数组** ```java String str = "hello"; char[] charArray = str.toCharArray(); // 结果: {'h','e','l','l','o'} ``` #### 2. **C#** - **字符数组字符串** 1. **使用 `string.Concat`** ```csharp string str = string.Concat<char>(tempChar); // 直接拼接字符数组 ``` 2. **使用 `string.Join`(空分隔符)** ```csharp string str = string.Join("", tempChar); // 效果等同于拼接[^4] ``` 3. **使用 `new string` 构造函数(推荐)** ```csharp string str = new string(tempChar); // 直接构造字符串 ``` - **字符串 → 字符数组** ```csharp string str = "hello"; char[] charArray = str.ToCharArray(); // 结果: {'h','e','l','l','o'} ``` #### 3. **C++** - **字符数组字符串** ```cpp char test[50] = "hello"; string testString = test; // 直接赋值转换[^5] ``` - **字符串 → 字符数组** ```cpp string testString = "hello"; char test2[50]; strcpy(test2, testString.c_str()); // 使用 strcpy 安全拷贝 // 或逐字符复制 for (int i=0; i < testString.size(); i++) { test2[i] = testString[i]; } ``` #### 4. **JavaScript** - **数组字符串** ```javascript const arr = ['h','e','l','l','o']; const str = arr.join(''); // 输出: "hello" [^2] ``` - **字符串数组** ```javascript const str = "hello"; const arr = str.split(''); // 结果: ['h','e','l','l','o'] ``` --- ### 关键注意事项 1. **内存安全性(C/C++)**:需确保字符数组长度足够,避免溢出。 2. **编码差异**:中文字符可能需要考虑多字节编码(如UTF-8)。 3. **性能优化**:直接构造(如Java的`new String`或C#的`new string`)通常效率更高[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值