Java中String的split函数的详解及应用

文章目录

  • 一、 split函数详解
  • 二、应用

一、 split函数详解

split(String regex)为java.lang.String类的方法,其功能通俗的说就是以传入的分隔符参数拆分该字符串
方法具体为:

public String[] split(String regex) {
        return split(regex, 0);
}

方法内部调用了一个重载的 split(regex,0) 方法,split(regex)方法最终返回一个字符串数组。方法 split(regex,0)原形是split(String regex, int limit),该方法中的regex为匹配样板,通俗的说就是拆分字符串的标志,而limit在官方文档中是这样描述的:

The parameter controls the number of times the pattern is applied and therefore affects the length of the resulting array. If the limit n is greater than zero then the pattern will be applied at most n - 1 times, the array’s length will be no greater than n, and the array’slast entry will contain all input beyond the last matched delimiter.
If n is non-positive then the pattern will be applied as many times as possible and the array can have any length. If n is zero then the pattern will be applied as many times as possible, the array can have any length, and trailing empty strings will be discarded.

意思是说limit这个参数控制样板应用的次数,它影响结果数组的长度。如果 limit > 0,样板会被应用limit - 1次,也就是拆分字符串成 limit 部分,数组的最后一个元素会包含从最后一个样板匹配位置的下一个字符到字符串结束的所有字符;如果 limit = 0,那么输入字符串末尾的空格会被丢弃;如果 limit <= 0,样板会被尽可能地匹配,结果数组的长度是未知的

下面我们通过代码来说明上述内容

public static void main(String[] args) {
     String str2 = "a,b,c,,,";
     
     String[] str1Ayyay = str2.split("," ,2);
     for(String str : str1Ayyay)
         System.out.print("\""+str+"\"" +"\t");
     System.out.println();
     
     String[] str2Ayyay = str2.split(",");
     for(String str : str2Ayyay)
         System.out.print("\""+str+"\""+"\t");
     System.out.println();
    
     String[] str3Ayyay = str2.split(",",-1);
     for(String str : str3Ayyay)
         System.out.print("\""+str+"\""+"\t");
}

在这里插入图片描述

public static void main(String[] args) {
     String str1 = "a,b,c";
     String str2 = "a,b,c,,,";
     String str3 = "a,b,c,,,d";

     String[] str1Ayyay = str1.split(",");
     for(String str : str1Ayyay)
        System.out.print("\""+str+"\"" +"\t");
    System.out.println();
    
     String[] str2Ayyay = str2.split(",");
     for(String str : str2Ayyay)
         System.out.print("\""+str+"\""+"\t");
     System.out.println();
     
     String[] str3Ayyay = str3.split(",");
     for(String str : str3Ayyay)
         System.out.print("\""+str+"\""+"\t");
}

在这里插入图片描述
总的来说:如果 limit > 0,将字符串分为 limit 部分,返回的数组中最后一个元素是由第 limit-1 个分隔符后的所有字符组成,如果 limit = 0,将字符串末尾由相邻的分隔符分割成的空串舍去,如果 limit <= 0,将所有分隔符都应用,即分隔符都起作用, 相邻字符分割出的是一个空的字符串。

二、应用

验证IP地址

private boolean isIpv4(String IP){
    String[] IP1 = IP.split("\\.");
    if(IP1.length != 4)
        return false;
    for(String str : IP1){
        //两个点相连
        if(str.length() == 0)
            return false;
        //比较数字位数及不能有前导零的情况
       if(str.length() < 0 || str.length() > 3 || (str.charAt(0) == '0' && str.length() > 1))
            return false;
      //比较字符串中的字符是否是数字
      int num = 0;
      for(int i = 0;i < str.length(); i++){
          char ch = str.charAt(i);
          if(ch < '0' || ch > '9')
              return false;
          //是数字,判断范围
          num = num*10+ch-'0';
          if(num < 0 || num > 255)
              return false;
       }
    }
    return true;
}
private boolean isIpv6(String IP){
     String[] IP1 = IP.split(":",-1);
     //判断个数
     if(IP1.length != 8)
         return false;
     //判断字符串
     for(String str : IP1){
         //两个:相连
         if(str.length() == 0)
             return false;
         if(str.length() > 4)
            return false;
         //判断字符串中的字符
         for(int i = 0; i < str.length(); i++){
             char ch = str.charAt(i);
             boolean bool = (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F');
            if(!bool)
                 return false;
         }
     }
     return true;
}
public String solve (String IP) {
     if(isIpv4(IP))
         return "IPv4";
     if(isIpv6(IP))
         return "IPv6";
     return "Neither";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/111627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.2 SSAO算法 屏幕空间环境光遮蔽

一、SSAO介绍 AO 环境光遮蔽&#xff0c;全程Ambient Occlustion&#xff0c;是计算机图形学中的一种着色和渲染技术&#xff0c;模拟光线到达物体能力的粗略的全局方法&#xff0c;描述光线到达物体表面的能力。 SSAO 屏幕空间环境光遮蔽&#xff0c;全程 Screen Space Amb…

MySQL与MongoDB,该如何做技术选型?

hello&#xff0c;大家好&#xff0c;我是张张&#xff0c;「架构精进之路」公号作者。 引言 一般情况下&#xff0c;会考虑到MySQL与MongoDB如何做技术选型的时候&#xff0c;你一定是遇到了类似于非结构化数据JSON的存取难题&#xff0c;否则大家都直接MySQL开始搞起了。 为什…

matlab simulink PMSM_SVPWM PI转速控制

1、内容简介 略 8-可以交流、咨询、答疑 2、内容说明 略PMSM_SVPWM PI转速控制 PMSM SVPWM PI转速控制 3、仿真分析 4、参考论文 略

电脑办公最佳拍档 夸克网盘升级低耗能备份、PDF阅读器等功能

临近年终&#xff0c;上班族不仅要总结过去一年的成绩还要开始制定新规划&#xff0c;在这个过程中整理资料是必不可少的环节。对于经常需要使用文件备份和PDF的用户&#xff0c;推荐大家试一下夸克网盘电脑端&#xff0c;升级后的“低耗能备份”和“PDF阅读器”让备份体验更丝…

面试150题做题记录

面试150题做题记录 题目1: 合并两个有序数组 题目1: 合并两个有序数组 题目&#xff1a;https://leetcode.cn/problems/merge-sorted-array/?envTypestudy-plan-v2&envIdtop-interview-150 最优思路&#xff1a;利用原有数列的单调性质&#xff0c;从右往左遍历&#xff…

MySQL启动后反复重新启动故障

MySQL版本为5.6.45 系统为Ubuntu 20.04 LTS 该服务器重启后&#xff0c;MySQL需要手动执行启动。 运行执行脚本后发现异常&#xff0c;如下图&#xff1a; 提示MySQL服务在不停重复启动。 反复使用ps -ef |grep mysql命令查看&#xff0c;发现mysql进程号一直在变化&#x…

Spring Boot Web MVC

文章目录 一、Spring Boot Web MVC 概念二、状态码三、其他注解四、响应操作 一、Spring Boot Web MVC 概念 Spring Web MVC 是⼀个 Web 框架&#xff0c;一开始就包含在Spring 框架里。 1. MVC 定义 软件⼯程中的⼀种软件架构设计模式&#xff0c;它把软件系统分为模型、视…

redis的分布式锁

分布式锁是一种用在分布式系统中实现同步和互斥访问的机制。 1、分布式锁概念 满足分布式系统或者集群模式下&#xff0c;多进程可见并且互斥的锁。 分布式锁的核心思想就是让分布式集群中的节点都适用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;就能锁住线程…

038-第三代软件开发-简易视频播放器-自定义Slider (二)

第三代软件开发-简易视频播放器-自定义Slider (二) 文章目录 第三代软件开发-简易视频播放器-自定义Slider (二)项目介绍简易视频播放器自定义Slider (二)横向纵向 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&…

我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库&#xff0c;可以处理图像和视频数据。它包含了超过2500个优化过的算法&#xff0c;用于对图像和视频进行处理&#xff0c;包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言&#xff0c;包括C、Python、Java等&#xff0c…

golang 实现雪花算法

雪花算法概述 snowflake 是 twitter 开源的分布式ID生成算法&#xff0c;其核心思想为&#xff0c;一个long型的ID&#xff1a; 41 bit 作为毫秒数 - 41位的长度可以使用69年10 bit 作为机器编号 &#xff08;5个bit是数据中心&#xff0c;5个bit的机器ID&#xff09; - 10位…

【网络知识必知必会】聊聊网络层IP协议

文章目录 前言IP 协议格式总结 前言 在之前的博文中, 我们聊过了传输层中的两个重点协议 TCP 和 UDP, 本文我们再来聊聊网络层中的一个协议IP, 简单认识一下 IP 协议格式. IP 协议与 TCP 协议的复杂度也不妨多让, 不过我们在这里只是简单的聊一聊 IP 协议的报文格式就行, 毕竟…

图书馆书目推荐数据分析与可视化

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

【Java初阶练习题】-- 循环练习题

循环练习题 1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)2. 判定一个数字是否是素数3. 打印 1 - 100 之间所有的素数4. 输出 1000 - 2000 之间所有的闰年5. 输出乘法口诀表6. 求两个正整数的最大公约数7. 求出0&#xff5e;999之…

图数据库Neo4j概念、应用场景、安装及CQL的使用

一、图数据库概念 引用Seth Godin的说法&#xff0c;企业需要摒弃仅仅收集数据点的做法&#xff0c;开始着手建立数据之间的关联关系。数据点之间的关系甚至比单个点本身更为重要。 传统的**关系数据库管理系统(RDBMS)**并不擅长处理数据之间的关系&#xff0c;那些表状数据模…

滚动条默认是隐藏的只有鼠标移上去才会显示

效果 在设置滚动条的类名中写 /* 滚动条样式 */.content-box::-webkit-scrollbar {width: 0px; /* 设置纵轴&#xff08;y轴&#xff09;轴滚动条 */height: 0px; /* 设置横轴&#xff08;x轴&#xff09;轴滚动条 */}/* 滚动条滑块&#xff08;里面小方块&#xff09; */.…

分享一下微信小程序抽奖链接怎么做

标题&#xff1a;微信小程序抽奖链接制作全攻略&#xff0c;轻松玩转营销抽奖活动 一、引言 在当今的数字化时代&#xff0c;抽奖活动已经成为一种高效的市场营销策略&#xff0c;而微信小程序作为一个功能强大的移动端平台&#xff0c;为企业和个人提供了制作抽奖链接的便捷…

浅析Redis大Key | 京东云技术团队

一、背景 在京东到家购物车系统中&#xff0c;用户基于门店能够对商品进行加车操作。用户与门店商品使用Redis的Hash类型存储&#xff0c;如下代码块所示。不知细心的你有没有发现&#xff0c;如果单门店加车商品过多&#xff0c;或者门店过多时&#xff0c;此Key就会越来越大…

不同源安装nginx

Nginx是一款高性能的Web服务器软件。在安装Nginx时&#xff0c;可以选择不同的安装源。 1.官方源&#xff1a;在官方网站下载Nginx的源代码&#xff0c;然后进行编译安装。 2.EPEL源&#xff1a;EPEL (Extra Packages for Enterprise Linux)源是针对Red Hat、CentOS、Scienti…

IDEA初步入门

1 安装 现在的系统更迭很快&#xff0c;很多软件都只支持win10 和 11了&#xff0c;但我们过时党还在用win7. 所以就必须找到合适的版本。在windows 7 64位系统下&#xff0c;可以使用IDEA 2020.1.4版本。 在Jetbrain官方下&#xff0c;找到历史版本&#xff0c;找到windows版…