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

news2024/12/27 10:05:14

文章目录

  • 一、 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";
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm怎么运行python代码

创建项目 在PyCharm中&#xff0c;你可以创建一个项目来组织和管理你的Python代码。项目是一个存放代码文件的文件夹&#xff0c;它可以包含多个模块和包。 启动PyCharm后&#xff0c;选择“Create New Project”来创建一个新项目。 在弹出的对话框中&#xff0c;选择项目的位…

作品展示-

------------校二手交易平台---------- ---------植物大战僵尸修改器------------- -------------商品进销存系统------------- --------汽车车牌号码识别系统----------- ------------示波器---------------- ---------激光数据传输仪------------ -----------32*64双色点阵屏…

听GPT 讲Rust源代码--library/std(9)

题图来自 Rust 101 — Everything you need to know about Rust[1] File: rust/library/std/src/sys/wasi/io.rs 在Rust源代码中&#xff0c;rust/library/std/src/sys/wasi/io.rs文件的作用是实现了与WASI&#xff08;WebAssembly System Interface&#xff09;IO相关的功能。…

Leetcode2086. 从房屋收集雨水需要的最少水桶数

Every day a Leetcode 题目来源&#xff1a;2086. 从房屋收集雨水需要的最少水桶数 解法1&#xff1a;贪心 我们可以对字符串 hamsters 从左到右进行一次遍历。 每当我们遍历到一个房屋时&#xff0c;我们可以有如下的选择&#xff1a; 如果房屋的两侧已经有水桶&#xff…

行业追踪,2023-10-31

自动复盘 2023-10-31 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Linux0.11内核源码解析-exec.c

主要实现对二进制可执行文件和shell文件的加载和执行&#xff0c;其中主要的函数是do_execve(),它是系统中断调用int 0x80的功能号__NR_execve()调用&#xff0c;是exec()函数的主要实现以下几点功能&#xff1a; 1.执行对参数和环境参数空间页面的初始化操作&#xff0c;初始…

2023年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 yyh[2023,杭州亚运会,[拱宸桥,玉琮莲叶]] jxwyyh[2][0] print(jxw[1]*2)以上代码运行结果是&#xff1f;&#xff08; …

[已解决]ERROR tool.ExportTool: Error during export: Export job failed!

ERROR tool.ExportTool: Error during export: Export job failed! 问题 sqoop导出数据的时候遇到问题&#xff0c;ERROR tool.ExportTool: Error during export: Export job failed 思路 sqoop的shell命令是这样的 sqoop export –connect jdbc:mysql://cdh00:3306/airq…

JDK常用性能监控和故障处理工具

JDK8 在JDK安装目录下的bin文件夹&#xff0c;有一些辅助命令行工具&#xff0c;通常用来获取JVM的信息或者监控JVM&#xff0c;在排查性能问题方面是非常好用的工具。以Centos7.9系统下的openJDK1.8.0_222为例&#xff08;不同大版本的JDK命令的参数会有差异&#xff0c;不同操…

利用python进行数据分析 pdf

利用python进行数据分析 pdf 介绍 在现代社会中&#xff0c;随着大数据时代的到来&#xff0c;数据分析的需求越来越大。而Python作为一门简洁且易于学习的编程语言&#xff0c;具有强大的数据分析能力&#xff0c;成为了广大数据分析师的首选工具之一。本文将指导一位刚入行的…

相关性网络图 | 热图中添加显著性

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 本期教程 写在前面 此图是一位同学看到后&#xff0c;想出的一期教程。 最近&#xff0c;自己的事情比较多&#xff0c;会无暇顾及社群和公众号教程。 1 安装和加载相关的R包 library(ggraph) library(tidy…

追求卓越 再添新荣誉 | Softing中国顺利通过ISO9001质量管理体系认证!

近日&#xff0c;羧福汀电子科技&#xff08;上海&#xff09;有限公司&#xff08;简称&#xff1a;Softing中国&#xff09;顺利通过ISO9001质量管理体系认证审核&#xff0c;并被授予认证证书。ISO9001认证的通过&#xff0c;代表Softing中国的软硬件技术研发水平及管理水平…

压敏涂料静态校准装置中的温度、真空压力和氧浓度精密控制解决方案

摘要&#xff1a;针对客户提出的在温度-10℃~80℃、绝对压力1Pa~600kPa、氧浓度0~80%范围内实现对压力敏感涂料静态特性校准测试腔室的精密自动控制要求&#xff0c;本文提出了相应的解决方案。解决方案的主要技术内容是采用TEC半导体制冷器进行温度控制、采用动态平衡法和电控…

C# Onnx 用于边缘检测的轻量级密集卷积神经网络LDC

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

Python二级 每周练习题24

练习一: 体重比较器 要求: 请编程实现如下功能: (1)程序开始运行时&#xff0c;提醒用户输入三个人的名字和体重 (可以分开输入&#xff0c;每次输入名字或者体重) (2) 程序自动比较&#xff0c;找出最重的一个人的名字和体重输出 的格式不限&#xff0c;但是要有最重人的姓名…

AcWing96. 奇怪的汉诺塔

题目 汉诺塔问题&#xff0c;条件如下&#xff1a; 1、这里有 A、B、C 和 D 四座塔。 2、这里有 n n n 个圆盘&#xff0c; n n n 的数量是恒定的。 3、每个圆盘的尺寸都不相同。 4、所有的圆盘在开始时都堆叠在塔 A 上&#xff0c;且圆盘尺寸从塔顶到塔底逐渐增大。 5、…

python实现MC协议(SLMP 3E帧)的TCP服务端

python实现MC协议&#xff08;SLMP 3E帧&#xff09;的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样&#xff0c;可以使用现成的pymodbus模块去实现。但是&#xff0c;我们可以根据协议帧进行组包&#xff0c;自己去实现帧的格式&#xff0c;而这一切可以基于socket模…

如何快速定制个性化外观验证码?

验证码作为人机交互界面经常出现的关键要素&#xff0c;是身份核验、防范风险、数据反爬的重要组成部分&#xff0c;广泛应用网站、App上&#xff0c;在注册、登录、交易、交互等各类场景中发挥着巨大作用&#xff0c;具有真人识别、身份核验的功能&#xff0c;在保障账户安全方…

【vtk学习笔记2】vtk编程中的基本对象与可视化管线

一、VTK编程中的基本对象 数据可视化一般需要一个数据源&#xff0c;可以来说具体的算法&#xff0c;如有限元、边界元等&#xff0c;也可以是测量数据&#xff0c;如医学检测数据等。这些基础数据经过变换处理&#xff0c;变成计算机图形流水线支持的数据&#xff0c;最后显示…

C语言编程之排列组合问题

1.动态取球 在生活中我们经常会遇到一个这样的问题&#xff0c;从N个球中随机取K个(N>K)&#xff0c;问有多少总取法。这是我们数学中的排列组合&#xff0c;通过排列组合可计算方法为&#xff1a;C(N,K);   例如一个袋子中有6个球为(1,2,3,4,5,6)&#xff0c;从袋子中一次…