解决java 分割字符串成数组时,小圆点不能直接进行分割的问题
作者:未来窥视者 发布时间:2023-11-05 03:13:24
标签:java,分割,字符串,数组
问题描述:
String preStr = "a.b.c"; // 这里要把该字符串按小圆点进行分割,成"a","b","c"
String[] string = preStr.split("."); // 直接这样写是不行的
正确的写法是,对小圆点进行转义
String[] string = preStr.split("\\.");
补充知识:Java中不使用split方法实现字符串分割成字符数组
核心思想
利用indexOf方法来定位分割符spliter
利用substring方法来截取分隔符前后的字符串,前字符串放到list中
循环操作1,2两个步骤,直到取得不包含分隔符的字符串,然后添加到list中
将list转成数组
代码实现:
public class TestDemo {
private static class SplitDemo {
public static String[] split(String rawer, String spliter) {
//先拷贝一份,避免直接更改全局变量
String rawerTemp = rawer;
//容纳分割后的分隔符前的字符串
List<String> list = new ArrayList<String>();
while(rawerTemp.indexOf(spliter)!=-1) {
//还存在spliter分割符的时候
String temp = rawerTemp.substring(0, rawerTemp.indexOf(spliter));
//将分隔符前的部分添加到list
list.add(temp);
//分割得到第一个分隔符后边的所有字符串
rawerTemp = rawerTemp.substring(rawerTemp.indexOf(spliter)+spliter.length());
}
//如果不存在分割符则直接加入
if(rawerTemp.length()!=0) {
list.add(rawerTemp);
}
//生成数组并返回
if(list.size()>0) {
String[] arrays = new String[list.size()];
for(int i=0;i<list.size();i++) {
arrays[i] = list.get(i);
}
return arrays;
}
return new String[0];
}
}
@Test
public void test() {
System.out.println(Arrays.toString(SplitDemo.split("", "\\")));
System.out.println(Arrays.toString(SplitDemo.split("aa&&22", "&&")));
System.out.println(Arrays.toString(SplitDemo.split("aa&&22&&", "&&")));
System.out.println(Arrays.toString(SplitDemo.split("aa&&||&&", "||")));
}
}
来源:https://blog.csdn.net/u013703363/article/details/62043284


猜你喜欢
- 在谈 JVM 内存区域划分之前,我们先来看一下 Java 程序的具体执行过程,我画了一幅图。Java 源代码文件经过编译器编译后生成字节码文
- 1.ArrayList 是基数组结构的,需要连续的内存空间从构造函数可以看出,ArrayList内部用一个Object数组来保存数据。对于无
- 1.写在前面目前SpringBoot得框架,越来越广泛,大多数中小型企业,在开发新项目得时候。后端语言使用java得情况下,首选都会使用到S
- 前言:在java的网络通信中,两个不同节点的主机想要进行通信则可以通过建立Socket对象(相当于客户端主机,向服务端请求发送信息)和Ser
- 本文实例讲述了C#异步委托调用实现方法。分享给大家供大家参考。具体如下:static void Main(string[] args){ /
- 流程:Springboot开发过程还有一个是mybatis的依赖测试接口@RestControllerpublic class Hello
- 我们很容易能想到,可以用递归来实现汉诺塔游戏。因为要将n(n>1)个盘子从“源”柱子移到“目标”柱子,我们要先把n-1个盘子从“源”柱
- 本文实例为大家分享了Android双向选择控件DoubleSeekBar的使用方法,供大家参考,具体内容如下先看效果图1.DoubleSli
- 说点废话Android开发中,TextView类的控件应该说是很常用了。一般来说我们是通过android:textSize="20
- Java类加载基本过程详细介绍基本过程:根据类的全限定名称加载定义类的二进制字节流。将字节流代表的静态存储结构转化为方法区的运行时数据结构内
- spring开启声明式事务导入依赖pom.xml<dependencies>  
- 一、方法(Method)概念 1、Java 中的方法就是其他编程语言中的函数(Function) 2、方法的定义格式:①
- 一:父级pom.xml文件 resources目录下新建指定文件夹,存放Spring配置文件<profiles> &
- 1.Context的应用Context在启动协程模式中就已经遇到过叫CoroutineContext,它的意思就是协程上下文,线程的切换离不
- 如下所示:/** * 读写权限 自己可以添加需要判断的权限 */public static String[]permissionsREAD=
- 这是一个演示如何使用java执行定时任务的实例,本实例开始运行后不会自动结束,请在运行本实例后手动结束程序。package com.hong
- 通过下面代码在构造函数中调用方法 SetShadow();即可实现无边框窗体的阴影效果了需要添加命名空间 using System.Runt
- spring-AOP 及 AOP获取request各项参数AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事
- 前言本文主要介绍了关于spring boot中servlet启动过程与原理的相关内容,下面话不多说了,来一起看看详细的介绍吧启动过程与原理:
- 一.协程概述1.概念协程是Coroutine的中文简称,co表示协同、协作,routine表示程序。协程可以理解为多个互相协作的程序。协程是