Java 将字符串拆分成数组,实现字符串组合

将字符串拆分成数组和实现字符串组合
不能使用语言的基本分割组合函数(如 Java 的 String.split, php 的 explode 和 implode)
1) 字符串拆分成字符串数组,如"ab&&2"通过"&&“做分割符,分割得到字符串数组[“ab”, “2”]
2) 实现字符串组合,如[“ab”, “2”]通过”&&“分隔符,组成字符串"ab&&2”

1.字符串拆分成数组,如"ab&&2"通过"&&"做分割符,分割得到字符串数组[“ab”, “2”]

	解题思路:
	可以先将字符串拆分成一个字符数组,
	遍历字符数组通过查找 "&&" 这个分割符来做分割处,找到其下标,
	定义一个字符串数组来储存分割出来的字符串

2.实现字符串组合,如[“ab”, “2”]通过"&&“分隔符,组成字符串"ab&&2”

 	解题思路:
	想要把一个字符串数组 组合成一个字符串
	以["ab", "2"]为例 可以通过去掉开头的[" 和结尾的 "]然后把 ", "转换成 &&符号的方法完成
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test01 {
static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		test01();
		test02();
	}
	//字符串拆分成数组,如"ab&&2"通过"&&"做分割符,分割得到字符串数组["ab", "2"]
	public static void test01() {
		// 输入一个字符串
		String str = sc.nextLine();
		// 定义一个字符串数组,储存分割得到的字符串
		List<String> list = new ArrayList<String>();
		// 输入的字符串的长度
		int len = str.length();
		// 把字符串拆分成字符数组
		char[] ch = str.toCharArray();
		int temp = 0;
		for (int i = 0; i < len - 1; i++) {
			// 查看是否出现分割符&&
			if (ch[i] == '&' && ch[i + 1] == '&') {
				list.add("\"" + str.substring(temp, i) + "\"");
				i += 2;
				temp = i;
			}
			// 查看是否最后出现了分割符&&没有就继续分割这个字符串
			if ((i == len - 1 || i == len - 2) && (ch[i - 1] != '&' || ch[i] != '&')) {
				list.add("\"" + str.substring(temp, len) + "\"");
			}
		}
		// 输出这个字符数组
		System.out.println(list.toString());

	}

	// 实现字符串组合,如["ab", "2"]通过"&&"分隔符,组成字符串"ab&&2"
	public static void test02() {
		// 输入这个字符串数组
		String sList = sc.nextLine();
		// System.out.println(sList);
		// 同样将这个字符串拆分成拆分成一个字符数组
		char[] ch = sList.toCharArray();
		// 定义一个字符串缓冲类,通过字符串的拼接来组合成一个新的字符串。
		StringBuffer sBuffer = new StringBuffer();
		for (int i = 2; i < sList.length() - 2; i++) {
			//字符串拼接
			sBuffer.append(ch[i]);
			//查找两个字符串的连接处 ", "
			if (i < (sList.length() - 5) && ch[i + 1] == '\"' && ch[i + 2] == ',' && ch[i + 3] == ' '
					&& ch[i + 4] == '\"') {
				sBuffer.append("&&");
				i += 4;
			}
		}
		//输出这个重新组合成的字符串
		System.out.println(sBuffer.toString());
	}
}
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值