精华内容
下载资源
问答
  • 其中,我发现有时候,我们在数据库可能保存一些有规律的字符串,比如“123,321,4556,41324”类似这种,通过‘,’或者其他分隔符隔开的字符串值,但是我们业务需求是想要把这种字符串转换成[123,321,4556,41324]...

    发现最近老是写vue的东西,仔细一想,我是个java程序员呀。这样划水不对呀。所以最近研究了一下在oracle中可能出现的一些情况的对策;

    其中,我发现有时候,我们在数据库中可能保存一些有规律的字符串,比如“123,321,4556,41324”类似这种,通过‘,’或者其他分隔符隔开的字符串值,但是我们业务需求是想要把这种字符串转换成[123,321,4556,41324]的数组格式,也就是查询出来的返回值是list或者list格式;

    按照正常的思路,我们都会先查询出一个String的值,然后在java中使用split方法来实现,但是我们今天不走寻常路,直接要在数据库中查询出一个数组;

    但是如何实现呢?oracle是没有split方法的,我首先想到的是自己实现一个split方法,然后在查询数据的时候直接调用方法就能实现了,但是这样不就跟先查询出来在split分割没啥区别了呢?不行,说好不走寻常路的;

    然后我发现oralce中对字符串处理的方法中常用的方法有replace,translate,substr等

    其中substr可能可以实现,那么我假设一下,我要使用SUBSTR(string,start, [length])方法实现切割字符串的话,那么我需要只要分隔符所在的index值,那么需要用indexof方法,但是oracle好像没有提供这个方法,找了一下,发现有个instr( string1, string2 [, start_position [, nth_appearance ] ] ) 方法,字符串1中字符串2在第start_position 次出现的index;nth_appearance是查找方向,1是正向,-1是反向,那么我可以用instr先获取到分隔符出现的位置,然后再使用substr函数,但是每次使用的时候都需要获取到第n和n+1个分隔符的位置来获取截取长度,用起来好像不太方便,在sql里面不太好写;

    于是我有没有什么其他的招式可以更方便的实现,嘿,我还真找到一个比较方便的方法:REGEXP_SUBSTR(string, pattern, position, occurrence, modifier)

    使用正则匹配截取字符串的方法,这个方法用的比较少,但是这个方法比substr方法更方便的地方就在于它是直接使用分隔符分割所有字符串,所以不需要分隔符的index也不需要知道截取长度,就他了;

    这个方法怎么用呢?举个栗子:SELECT REGEXP_SUBSTR('123,321,4556,41324', '[^,]+') FROM DUAL;

    ->>        123

    我们匹配正则‘,’号开始,多个逗号,由于正则不太熟,哈哈,后面两个参数先不用,那么我得到了字符串中分隔符隔开的第1个子字符串,后面两个参数是什么作用呢?其中第三个参数position是分割后的字符串起点的index,这里的index是从1开始的,第四个参数很重要,是分隔开之后的第几个字符串,也就相当于我们数组的下标,当然也是从1开始的;最后一个参数我觉得应该用的时候比较少,是用作忽略大小写的,默认是不忽略,需要忽略大小写的话就加上‘i’来标识;

    这样之后,我们只需要用一个i++循环来获取第四个参数的值,就能得到我们所需的数组了DECLARE

    X NUMBER;

    Y NUMBER;

    BEGIN

    X := 0;

    WHILE X < 4 LOOP

    X := X + 1;

    SELECT REGEXP_SUBSTR('123,321,4556,41324', '[^,]+',1,X) INTO Y FROM DUAL;

    DBMS_OUTPUT.PUT_LINE(Y);

    END LOOP;

    END;->>123

    ->>321

    ->>4556

    ->>41324

    结果这又变成了一个存储过程了,而且到底需要分割出几个字符串是事前不知道的,这样不行,想想有没有其他简单点的实现方法呢?

    这是我突然想到了一个,之前我不是写过一个connect by吗?connect by的时候不是有一个level值吗?每一层递归的level正好拿来当做每一次数组下标使用,于是我简化出了如下方法:SELECT REGEXP_SUBSTR('123,321,4556,41324', '[^,]+', 1, LEVEL)

    FROM DUAL

    CONNECT BY REGEXP_SUBSTR('123,321,4556,41324', '[^,]+', 1, LEVEL) IS NOT NULL;

    在获取结果为null的时候终止递归,哈哈,完美实现了不走寻常路的结果;

    展开全文
  • Java中不使用split方法实现字符串分割成字符数组 代码实现: public class TestDemo { private static class SplitDemo { public static String[] split(String rawer, String spliter) { //先...

    Java中不使用split方法实现字符串分割成字符数组

    核心思想

    1. 利用indexOf方法来定位分割符spliter
    2. 利用substring方法来截取分隔符前后的字符串,前字符串放到list中
    3. 循环操作1,2两个步骤,直到取得不包含分隔符的字符串,然后添加到list中
    4. 将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&&||&&", "||")));
    	}
    }
    
    
    展开全文
  • String str=""; System.out.println(str.split(",").length);...再来看上面的题目,原字符串不包含分隔符,直接返回原字符串,也就是一个空的字符串数组。虽然字符串为空,存到字符串数组为空,但这个.
    	String str="";
    	System.out.println(str.split(",").length);
    

    这题当时没搞明白,现在写下心得:

    1. 字符串、数组和集合如何获取长度问题?

      字符串获取长度用的是length()

      数组获取长度使用的是length

      泛型集合集合获取元素个数使用的是size()

    2. split()方法
      jdk1.8开发文档有关split()方法说明
      可以很清楚的看出方法的返回值为一个数组

    再来看上面的题目,原字符串不包含分隔符,直接返回原字符串,也就是一个空的字符串数组。虽然字符串为空,存到字符串数组为空,但这个空的也会算一个元素。所以运行结果为1

    如果原理有误可以留言讨论交流

    展开全文
  • 这是一个String的split中用|来判别用多个字符来分割字符串的示例。。。第一次接触java,希望大家相互学习。。。嘿嘿。。。下面是我写的例子: package net.etwo.string.split; public class TestStringSplit { ...

    这是一个String的split中用|来判别用多个字符来分割字符串的示例。。。第一次接触java,希望大家相互学习。。。嘿嘿。。。下面是我写的例子:

    package net.etwo.string.split;
    
    public class TestStringSplit {
    
    public static void main(String[] args) {
    String str = "GET /?user=Client&name=client_name&pwd=client_pwd HTTP/1.1";
    String[] strBuf = str.split("\\?|=|&| ");
    for (int i = 0; i < strBuf.length; i++) {
    String string = strBuf[i];
    System.out.println(string);
    }
    }
    }
     

     

    展开全文
  • Java split() 分割字符串

    2019-10-31 15:10:07
    split() 方法用于把一个字符串分割字符串数组。 用法 //separator:字符串或正则表达式,从该参数指定的地方分割 stringObject stringObject.split(separator,howmany) 若separator=="",空字符串,那么...
  • java中,经常会对字符串进行分割,使用split方法字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:public class StringSplit {public static void main(String[] ...
  • 由于自学java过程碰到了关于split()方法的一些”奇怪“之处,花费了好大的时间和精力才搞定,看了看网上的资源也很少有关于分割后数组长度的帖子,所以为了积累也为了给广大学者们提个醒,不要再入坑了,不多说了,...
  • 近日在写存储过程的时候需要用到分割字符串并返回一串数组,网上百度了一大堆,发现要不是错误的,要不就是需求不对,因此干脆自己写一个类似Java里面的split方法好了。 下面定义一个函数返回的是一个number型...
  • String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况。由于split()是用正则实现的分割,所以当遇到一些特殊字符时,就需要使用一些特殊处理。以下是对一些常用特殊符号所进行的...
  • 本文转自:http://www.cnblogs.com/ggjucheng/p/3352419.htmlpublic class StringSplit {public static void main(String[] args) {String sourceStr = "1,2...String[] sourceStrArray = sourceStr.split(",");for ...
  • java.lang包中有String.split()方法,返回是一个数组。一、“.”和“|”都是转义字符,必须得加"\\";若是用“.”做为分隔的话,必须是以下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split("....
  • Java使用String对象的split()方法分割字符串

    万次阅读 多人点赞 2018-01-14 19:58:29
    Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符。当分割符是 . 或者是 | 时,必须使用 \\ 进行转义。 没有加转义符按 . 分割字符串,返回值是一...
  • 实现方法 split, 能够指定分割符将字符串拆分成字符串数组 思路如下: 统计字符串中的目标分割符的个数。 创建字符串数组并将其初始化为 “”,不初始化的话字符串数组就会是null。 依次截取字符串中分隔符符之前...
  • java中,我们常常需要对字符串进行分割,使用split方法字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:public class StringSplit { public static void main...
  • Java中的我们可以利用split字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:1.split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。...
  • java.lang.String包中有split()方法,该方法的返回值是一个String类型的数组。split()方法分别有以下两种重载方式:split(String regex);split(String regex,int limit);参数regex :即 regular expression (正则...
  • Java语言split() 方法根据匹配给定的正则表达式来拆分字符串。这里要注意正则表达式的特殊字符。下面的代码执行后可以把test字符串按照我们预想的那种情况进行分割,没有问题。String test = "aasd#qwedc#...
  • --分割字符串 以逗号分割 FUNCTION str_split(str IN VARCHAR2) RETURN check_bill_id_table; --验证这些这些验收单的系统验收单是否已经建卡 --已建卡 check_result = 0 --未建卡 check_result = 1 ...
  • 安娜苏摇滚甜心ciqjava拆分字符split(":")[0].substring(1)是什么意思啊,尤其[0] 可以解释:jcs小萝莉安娜ava删除字符串的空格:1、删除字符串前后的空格,使用字符串提供的方法trim()去除;例:string s=...
  • 谁能介绍一下java里面的split方法和c#里面的split方法("把tes按:分割为5组即一个数组为5个元素"); String[] d=tes.split("o安娜苏缕梅酚求教个 问题 怎么能 吧 String b = "a,b;c,d;e,f"; ,和;都给拆分...
  • java中分割字符串可以使用split()方法来实现分割。 String str1 = "aabccbdd"; String[] Str1Array = str1.split("b");//结果Str1Array:[aa, cc, dd] 上面的例子中可以成功的将字符串用“b”来进行分割...
  • 问题描述 前端传入的字符串用逗号(英文)分隔,但在文本框手输(有点low)可能会出现中文逗号,要兼容这种情况。 原因分析 ...在split方法中使用正则表达式来代替具体的分隔符 ",|," 参考文章 ...
  • 源码注释:Splits this string around matches of the givenregular expression.通过查看源码及注释可知,这个方法的参数其实是一...这个参数并不是一个简单的分割用的字符,而是一个正则表达式,它对一些特殊的字符...
  • Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符。当分割符是 . 或者是 | 时,必须使用 \ 进行转义。 没有加转义字符\按 . 分割字符串,返回值是...
  • java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr= "1,2,3,4,5";...
  • 一、概述我有一个字符串,"004-034556"我想分成两个字符串:string1="004";string2="034556";这意味着第一个字符串将包含之前的字符'-',第二个字符串将包含之后的字符'-'。我还想检查字符串是否包含'-'在其中。如果...
  • Java语言split() 方法根据匹配给定的正则表达式来拆分字符串。这里要注意正则表达式的特殊字符。 下面的代码执行后可以把test字符串按照我们预想的那种情况进行分割,没有问题。 String test = "aasd#...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 703
精华内容 281
关键字:

java中split方法分割字符串

java 订阅