java基础-正则表达式+文件操作+内置包装类

news/发布时间2024/5/15 9:34:10

目录

  • 正则表达式
    • 去除字符串前后空格:
    • 去除每一行中首尾的空格
    • 去除开头的 '数字_'
  • 文件操作
    • 打印当前项目路径
    • 获取文件的上级目录
    • /和\
    • 读取文件
  • 内置包装类
    • System类
      • 常用方法
    • Number类
      • Integer类常用方法
      • Float和Double

正则表达式

去除字符串前后空格:

str.trim()

去除每一行中首尾的空格

import java.util.regex.*;
Pattern pt = Pattern.compile("^\\s*|\\s*$");
Matcher mt = pt.matcher(line);
String str = mt.replaceAll("");

去除开头的 ‘数字_’

import java.util.regex.Matcher;
import java.util.regex.Pattern;// 处理例如 '0_1_a_test.docx',只需要去掉最开始的 'idx_'
String str = "10_1_a_test.docx";
Pattern p = Pattern.compile("\\d*_"); //匹配一个或多个数字再加一个下划线
Matcher m = p.matcher(str);
String tempAttachName = m.replaceFirst(""); // 输出:1_a_test.docx

文件操作

打印当前项目路径

System.getProperty("user.dir")
这是项目根目录路径,下面的自己写==

获取文件的上级目录

import java.io.File;public class DirSize {public static void main(String[] args) {File dir = new File("/home/huanyu/Desktop");String parentPath =dir.getParent();System.out.println("该目录的上级目录为:"+parentPath);}
}

/和\

windows和Linux的文件分隔符不同,获取方式

import java.io.File;public class test{public static void main(String args[]) {String a = System.getProperty("file.separator");System.out.println(a);System.out.println(File.separator);}
}

读取文件

FileInputStream fis = new FileInputStream(filePath); // filePath是自定义路径str
// 指定编码格式
BufferedReader br = new BufferedReader(new InputStreamReader(fis, "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {//System.out.println(line);//break;
}
fis.close();这个方便在于能快速处理:
//1. filter line 3
//2. convert all content to upper case
//3. convert it into a List
list = stream.filter(line -> !line.startsWith("line3")).map(String::toUpperCase).collect(Collectors.toList());Charset c = Charset.forName("UTF-8");
//System.out.println(Charset.isSupported("UTF-8"));
try(Stream<String> stream = Files.lines(Paths.get(filePath), c)) {List<String> raws = new ArrayList<>();raws = stream.collect(Collectors.toList());for (String s:raws) {//System.out.println(s);}
} catch(IOException e) {e.printStackTrace();
}      

内置包装类

Object类是所有类的父类,如果一个类被定义后,没有指定继承的父类,那么默认父类就是Object类。因此Object类中定义的方法,其他类也可以用:如equals()和getClass()。

public static void printClassinfo(Object obj){//获取类名System.out.println("类名:"+obj.getClass().getName());//获取父类名System.out.println("父类:"+obj.getClass().getSuperclass().getName());System.out.println("实现的接口有:");//获取实现的接口并输出for(int i=0;i<obj.getClass().getInterfaces().length;i++){System.out.println(obj.getClass().getInterfaces()[i] + "\n");}}

System类

构造方法是private,所以不能创建它的对象,不能实例化它。其内部的成员变量和方法都是static的,可以调用。成员变量有:

  1. PrintStream out 标准输出流,如println就是out的方法,不是System的方法
  2. InputStream in 标准输入流
  3. PrintStream err 标准错误输出流
public void contextLoads() {int c;try {// 使用System.in的话读汉字会出错,用InputStreamReader// 并指定编码集才可以c = System.in.read(); //InputStreamReader in = new InputStreamReader(System.in, "UTF-8");//c = in.read();while (c != '\r') {System.out.print((char) c);//c = in.read();c = System.in.read(); }} catch(IOException e) {System.out.println("\nThis is IOException: \n");System.out.println(e.toString());} finally {System.out.println("\nThis is finally bloc: \n");System.err.println();}}

常用方法

  1. 数组复制
    arraycopy方法:从原数组中截取一段,替换到目标数组中
    System.arraycopy(dataType[] srcArray,int srcIndex,dataType[] destArray,int destIndex,int length)此方法要求srcIndex+length <= srcArray.length且destIndex+length <= destArray.length
    如果目标数组存在,不会重构,相当于替换部分元素
    System.arraycopy(scores,0,newScores,2,8);
    这里表示使用scores数组的[0,8)替换newScores数组的[2, 10)

  2. 获取当前的计算机时间

long start=System.currentTimeMillis();
// code block
long end = System.currentTimeMillis();
double time=(end-start) / 1000.0;

因为获取的都是毫秒,要除以1000换算到秒

  1. 终止当前正在运行的Java虚拟机
public static void exit(int status)

status为0时表示正常退出,非0时是异常。在图形界面编程中实现程序的退出功能。

  1. 获得系统级的参数
System.getProperty(属性名);System.out.println(System.getProperty("java.version"));System.out.println(System.getProperty("java.home"));System.out.println(System.getProperty("os.name"));System.out.println(System.getProperty("os.version"));System.out.println(System.getProperty("user.name"));System.out.println(System.getProperty("user.home"));System.out.println(System.getProperty("user.dir")); 

Number类

Number类是一个抽象类,属于java.lang,数字类包装类都是Number的子类。它定义了一些抽象方法,以各种不通过数字格式返回对象的值,如xxxValue()方法,就是将Number对象转换为xxx数据类型的值返回。抽象类是不能直接实例化的,要实例化具体的子类:

Number num = new Double(12.5);
System.out.println("返回 int 类型的值:"+num.intValue());

各个子类中都有类似方法,替换类型即可

Integer类常用方法

Integer integer1=new Integer(100); //以 int 型变量作为参数创建 Integer 对象 Integer integer2=new Integer(“100”); //以 String 型变量作为参数创建 Integer 对象
Integer.parseInt(str)	String转int
Integer.toString(i)	int转String
Integer.toBinaryString(num)	int转二进制字符串
Integer.toHexString(num)	
Integer.toOctalString(num)	
compareTo(Integer other)	比较两个Integer带的数值,相等返回0;如果小于other返回负值,大于other返回正值
valueOf(String s)	返回保存指定的String值的Integer对象
int month = Integer.valueOf(date.substring(5,7));
如果需要解析的字符串有前导0,如"02",会正常解析为2
intValue()	返回这个Integer带的int值

Integer类的常量
int max_value=Integer.MAX_VALUE;	2^31-1, 2147483647
Integer.MIN_VALUE;	-2^31, -2147483648
Integer.SIZE	32
Class c=Integer.TYPE	int

Float和Double

Float类常用方法
构造函数的参数可以带double,float,String
Float.parseFloat(str)	字符串转float
Float.toString(f)	float转字符串
isNaN(float v)	v是非数字值,返回true
isNaN()	此Float是非数字值,返回true
valueOf(String s)	返回保存指定String值的Float对象

Float类常用常量(可以用反射去看)

getFields() getDeclareFields()
System.out.println(Float.MAX_VALUE); //3.4028235E38
System.out.println(Float.MIN_NORMAL); // 1.17549435E-38
System.out.println(Float.MIN_VALUE); // 1.4E-45
System.out.println(Float.MAX_EXPONENT); // 127
System.out.println(Float.MIN_EXPONENT); // -126
System.out.println(Float.SIZE); // 32

Double的常用方法与Float的类似,直接替换为Double即可

System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308
System.out.println(Double.MIN_NORMAL); // 2.2250738585072014E-308
System.out.println(Double.MIN_VALUE); // 4.9E-324
System.out.println(Double.MAX_EXPONENT); // 1023
System.out.println(Double.MIN_EXPONENT); // -1022
System.out.println(Double.SIZE); // 64

Boolean和Byte

Boolean(boolean boolValue); 
Boolean(String boolString);
System.out.println(Byte.MAX_VALUE); // 127
System.out.println(Byte.MIN_VALUE); // -128
System.out.println(Byte.SIZE); // 8

Character类
包含一个char。常用方法:
is系列:isDigit(char ch) isLowerCase(char ch) isUpperCase(char ch)
isLetter(int codePoint) isLetterOrDigit(int codePoint)

to系列:char toLowerCase(char ch) char toUpperCase(char ch)

另外,compareTo返回的是两个字符的标准代码差值,如

Character character=new Character('A');
int result1=character.compareTo(new Character('V'));
System.out.println(result1);    // 输出:-21
int result2=character.compareTo(new Character('B'));
System.out.println(result2);    //输出:-1
int result3=character.compareTo(new Character('1'));
System.out.println(result3);    //输出:16

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

《游戏引擎架构》--学习3

内存管理 优化动态内存分配 维持最低限度的堆分配&#xff0c;并且永不在紧凑循环中使用堆分配 容器 迭代器 Unicode

国内大型语言模型(LLM)的研发及突破性应用

随着人工智能技术的迅猛发展&#xff0c;大型语言模型&#xff08;LLM&#xff09;在国内外科技领域成为了热点话题。这些模型因其在文本生成、理解和处理方面的卓越能力&#xff0c;被广泛应用于各种行业和场景中。 在中国&#xff0c;一批人工智能公司在LLM的研发与应用方面…

普中51单片机学习(EEPROM)

EEPROM IIC串行总线的组成及工作原理 I2C总线的数据传送 数据位的有效性规定 I2C总线进行数据传送时&#xff0c;时钟信号为高电平期间&#xff0c;数据线上的数据必须保持稳定&#xff0c;只有在时钟线上的信号为低电平期间&#xff0c;数据线上的高电平或低电平状态才允许…

数据结构之哈夫曼树

哈夫曼树 什么是哈夫曼树 哈夫曼树的定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构造一棵二叉树&#xff0c;若该树的带权路径长度达到最小&#xff0c;称这样的二叉树为最优二叉树&#xff0c;也称为哈夫曼树(Huffman Tree)&#xff0c;哈夫曼树是带权路径长度…

【Linux基础】vim、常用指令、组管理和组权限

Linux基础 1、目录结构2、vi和vim3、常用指令运行级别找回密码帮助指令时间日期指令搜索查找文件目录操作磁盘管理指令压缩和解压缩 4、组管理和组权限用户操作指令权限 1、目录结构 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&a…

主机开机正常但是显示器不亮怎么办 电脑故障问题解答

随着科技的不断发展&#xff0c;电脑或许已经是我们日常生活中最常接触的设备之一了。但是设备毕竟是设备&#xff0c;用久了自然会出毛病&#xff0c;开机的时候&#xff0c;主机开了&#xff0c;但是电脑显示屏不亮&#xff0c;这时候我们该怎么处理呢?下面我就来介绍几种解…

Unity3D学习之数据持久化——Json

文章目录 1. 前言2 Json文件格式2.1 Json配置规则2.2 Excel转Json 3. JsonUtlity3.1 文件中读写字符串3.2 使用JsonUtlity进行序列化3.3 JsonUtlity 反序列化 4 LitJson4.1 下载LitJson4.2 LitJson序列化4.3 LitJson 反序列化 5 JsonUtlity和LitJson对比6 Json数据管理类6.1 存…

SpringBoot Admin 详解

SpringBoot Admin 详解 一、Actuator 详解1.Actuator原生端点1.1 监控检查端点&#xff1a;health1.2 应用信息端点&#xff1a;info1.3 http调用记录端点&#xff1a;httptrace1.4 堆栈信息端点&#xff1a;heapdump1.5 线程信息端点&#xff1a;threaddump1.6 获取全量Bean的…

快速部署华为云WAF实现Web应用安全防护

通常&#xff0c;用户将web应用暴露在公网上&#xff0c;不做任何准备或者安全措施可能会受到黑客的注入入侵攻击导致网站核心数据被脱库泄露。以及木马上传网页篡改&#xff0c;导致网站公信力受到影响。本文九河云将为您介绍如何通过华为云WAF应用防火墙实现web应用安全防护&…

Spring Boot application.properties和application.yml文件的配置

在Spring Boot中&#xff0c;application.properties 和 application.yml 文件用于配置应用程序的各个方面&#xff0c;如服务器端口、数据库连接、日志级别等。这两个文件是Spring Boot的配置文件&#xff0c;位于 src/main/resources 目录下。 application.properties 示例 …

Element table 实现表格行、列拖拽功能

安装包 npm install sortablejs --save <template><div class"draggable" style"padding: 20px"><el-table row-key"id" :data"tableData" style"width: 100%" border><el-table-columnv-for"(it…

仿12306校招项目业务三(用户注册)

用户表结构 原本的表结构如下 由于用户量大&#xff0c;采用分库分表&#xff1a; 分库分表设计 根据系统设计的假设&#xff0c;12306 的注册用户规模约为 10 亿&#xff0c;每年新增用户约 1000 万。在用户数据分库或分表之前&#xff0c;我们需要先考虑拆分成多少个库或表…

数据库管理-第153期 Oracle Vector DB AI-05(20240221)

数据库管理153期 2024-02-21 数据库管理-第153期 Oracle Vector DB & AI-05&#xff08;20240221&#xff09;1 Oracle Vector的其他特性示例1&#xff1a;示例2 2 简单使用Oracle Vector环境创建包含Vector数据类型的表插入向量数据 总结 数据库管理-第153期 Oracle Vecto…

【前端素材】推荐优质后台管理系统Dashmin平台模板(附源码)

一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段&#xff0c;帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 后台管理系统是一种具有多层次结构的软件系统&#xf…

SAM轻量化的终点竟然是RepViT + SAM

本文首发&#xff1a;AIWalker&#xff0c;欢迎关注~~ 殊途同归&#xff01;SAM轻量化的终点竟然是RepViT SAM&#xff0c;移动端速度可达38.7fps。 对于 2023 年的计算机视觉领域来说&#xff0c;「分割一切」&#xff08;Segment Anything Model&#xff09;是备受关注的一项…

设计模式-创建型模式-建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步地创建一个复杂的对象&#xff0c;它允许用户只通过指定复杂对象…

【LeetCode每日一题】 单调栈的案例84 柱状图中最大的矩形

84 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释…

代码随想录算法训练营29期Day61|LeetCode 739,496

文档讲解&#xff1a;每日温度 下一个更大元素I 739.每日温度 题目链接&#xff1a;https://leetcode.cn/problems/daily-temperatures/description/ 思路&#xff1a; 维护一个单调递减的栈就行了。 一次读取一个数组中的元素&#xff0c;将其与栈顶元素比较&#xff0c;如…

数据结构-关键路径

介绍 在AOV网的基础上&#xff0c;如果用对应边来表示活动持续时间&#xff0c;这种有向图被称为AOE网在AOE网中&#xff0c;入度为0的为源点&#xff0c;出度为0的为汇点&#xff0c;整张网看做是一件事情完成的过程&#xff0c;那么这两个点就是事情的开始和结束。每个活动持…

设计模式-创建型模式-单例模式

0 引言 创建型模式&#xff08;Creational Pattern&#xff09;关注对象的创建过程&#xff0c;是一类最常用的设计模式&#xff0c;每个创建型模式都通过采用不同的解决方案来回答3个问题&#xff1a;创建什么&#xff08;What&#xff09;&#xff0c;由谁创建&#xff08;W…
推荐文章