首页 > 其他分享 >string常用方法

string常用方法

时间:2022-11-09 09:22:55浏览次数:47  
标签:常用 string System String split str println 方法 out

string的值是不可变的,因为底层用的是final修饰的一个char数组

字符串的定义

String str1="hello";
String str2=new String("hello");

string(bytes):

byte[] bytes={97,98,99};
String str3=new String(bytes);
System.out.println("str3:"+str3);//str3:abc
System.out.println(Charset.defaultCharset());//UTF-8

string(bytes[],charset)

try {
    String str4=new String(bytes,"UTF-8");
    System.out.println("str4"+str4);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

getbytes()得到字符串的字节码解码

String str4="欧阳";
byte[] bytes1= str4.getBytes();
System.out.println(Arrays.toString(bytes1));
//解码[-26, -84, -89, -23, -104, -77]

string(byte[],charset)将字符数组用特定的编码格式编码

String s = null;
try {
    s = new String(bytes1,"GBK");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
System.out.println(s);
//编码默认utf-8,我这里给了GBK,出现乱码:娆ч槼

string(byte[],charset.forName())

//string(byte[],charset.foeName())
String s1=new String(bytes1,Charset.forName("UTF-8"));
System.out.println(s1);//欧阳,底层已经处理了异常

string(char[],fromindex,endindex)

char[] chars={'h','e','l','l','o'};
String s2=new String(chars,0,3);
System.out.println(s2);
//从第一个元素开始,将三个字符转换成字符串:hel

toCharArray():将字符串转换成字符数组来输出

String num="123";
char[] chars = num.toCharArray();
for (char aChar : chars) {
    System.out.print(aChar);//将字符串的字符遍历输出
    int n=Character.digit(aChar,10);
}

split方法利用指定的regex来分割字符串:

String str="1001-admin-23-46";
String[] split = str.split("-");
for (String s : split) {
    System.out.println(s);
}

split的参数有两个时,其中limit表示控制匹配次数

  1. limit大于零时:输出limit个元素的数组,匹配次数为limit-1
String str="abaeaaasash";
String[] as = str.split("a",5);
//默认limit为0,最大值为数组的长度
System.out.println(Arrays.toString(as));
// 输出结果[, b, e, , asash],匹配了四次剩下的未匹配的都丢进同一个数组索引,as[4]
System.out.println(as.length);//5
  1. limit=0,默认limit等于零,若最后元素为空会舍弃空元素
String str="abaeaa";
String[] as = str.split("a");//默认limit为0,最大值为数组的长度
System.out.println(Arrays.toString(as));
System.out.println(as.length);
//limit=0时,最后元素为空会舍掉
// 输出结果[, b, e]
  1. limit<0时,不会舍弃末尾为空的元素
String str="abaeaa";
String[] as = str.split("a",-1);
//这里-1,-2,-3结果都是一样的
System.out.println(Arrays.toString(as));
// 输出结果[, b, e, , ]
System.out.println(as.length);//5

charAt():将指定位置字符串转化成字符

String str="hello";
int len=str.length();
for(int i=0;i<len;i++){
    System.out.println(str.charAt(i));
}

indexOf():检索字符串第一次所出现的索引位置,如果找到末尾也没找到返回-1,包头不包尾

String str = "hello,he is headache";
System.out.println(str.indexOf("l"));
System.out.println(str.indexOf("l", str.indexOf("l") + 1));
//包含第一个l出现的索引位置,因此得+1
//循环遍历查找出现he的索引
int i = 0;
int len=str.length();
while (i < len) {
int index = str.indexOf("he", i);
i = index + 2;
System.out.println(index);
}

lastIndexOf()寻找最后一次出现指定字符的位置,他是从右向左找,依旧包头不包尾

String str="hello,he is headache";
System.out.println(str.lastIndexOf("he"));
//寻找出现指定字符串的最后一个索引位置
System.out.println(str.lastIndexOf("he",5));
//从第5个索引开始向左边开始寻找索引位置,返回0
System.out.println(str.lastIndexOf("he",6));
//包头不包尾,输出6

截取:substring()

private static void demo6() {
    String str="abdec";
    System.out.println(str.substring(1));
    //从指定索引开始到末尾:bdec
    System.out.println(str.substring(1,3));
    //从指定索引开始到指定索引结束包头不包尾:bd
}
private static void demo9() {
        String phone="18379876753";
        String first=phone.substring(0,3);
    //包头不包尾
        String end=phone.substring(7);
        System.out.println(first+"****"+end);
    }

截取常用的位置:截取文件名称

public static void main(String[] args) {
    demo7("E:\\知乎.jpg");
    demo7("D:\\知乎.jpg");
}
private static void demo7(String filesPath) {
//可以利用split分割,将最后一个元素输出,但是需要四个"\"
String[] split = filesPath.split("\\\\");
System.out.println(split[split.length - 1]);
String 
 //利用lastIndexOf()方法来实现
  fileName=filesPath.substring(filesPath.lastIndexOf("\\")+1);
System.out.println(fileName);
//但是当有两个名称相同但是储存位置不同的不同文件
//需要保证文件名称的唯一性:
/* //1.时间戳:获得当前时间纳秒数   fileName=System.currentTimeMillis()+"_"+fileName;
System.out.println(fileName);*/
//2.随机的java.util.UUID 
 fileName=UUID.randomUUID().toString()+"_"+fileName;
System.out.println(fileName);
}

replace(): 替换

private static void demo8() {
    String fileName = "4e854dfe-b84c-4a42-9a06-c0657415061f_知乎.jpg";
    String name=fileName.replaceAll("-", "");
    System.out.println(name);
    String name1=fileName.replaceFirst("-","");
    System.out.println(name1);
}

字符串比较:

String str="abc";
String str1=new String("abc");
//System.out.println(str==str1.intern());
//比较的是常量,比较的是常量池的常量

//使用equals来比较
System.out.println(str.equals(str1));
System.out.println(str.hashCode()==str1.hashCode());

String code="AbdHj";
String code1="abdhj";
//不区分大小写来比较,也可以全部转换成大写或者小写来比较
System.out.println(code.equalsIgnoreCase(code1));

//用compareTo来比较,相等为0
System.out.println(code1.compareTo(code));
System.out.println(code1.compareToIgnoreCase(code));

endsWith(" "): 判断字符串是否是以开头/结尾

String path="C:\\a.jpg";
if(!path.endsWith("jpg")&&!path.endsWith("png"))throw new RuntimeException("文件格式不符合需求");
System.out.println(path);

contains(" "): 判断字符串是否包含某字符,底层时indexOf()

String s="hello";
System.out.println(s.contains("l"));

isEmpty(): 判断字符串是否是空

String s1=null;
if(s1.isEmpty())throw new RuntimeException("string is null");

string的拼接:

String str1="hello";
String str2="world";
String str=str1.concat(str2);
System.out.println(str);

String str3=str1+str2;
System.out.println(str3);
System.out.println(str3==str);//concat是new的,因此返回false

//join拼接
String name="admin";
String password="admin123";
int age=23;
//拼接成admin-admin23-23
String s= String.join("-",name,password,String.valueOf(age));
System.out.println(s);

标签:常用,string,System,String,split,str,println,方法,out
From: https://www.cnblogs.com/Liku-java/p/16857557.html

相关文章

  • 字符串类型如何格式化保留小数点后两位【ToString("0.00")】
    废话都不想写了,直接上图遇到将decimal字段或者double字段转换成字符串string类型字段时想直接保留小数点后面两位的时候可以有个比较简易的格式化写法也就是str.ToStr......
  • 道路交通:汽车剐蹭处理方法
    一、轻微剐蹭,对方全责1、勿关汽车,否则行车记录仪可能会突然失忆(待测试),下车前开手机录音;2、待安全后下车拍照,需包括对方人、双方车牌、碰撞位置左右各一;3、轻微事故且定......
  • Servlet的生命周期; Java IO流处理 ; python有点意思; matlab; 为什么要使用构造方法?JavaB
    Servlet的生命周期Servlet的生命周期主要有三个方法:init()初始化阶段service()处理客户端请求阶段destroy()终止阶段pagehelper怎么使用的​​https://pagehelper.github.......
  • 常用网页播放器代码
     我们在网页上看到的播放器无外乎WMP/RealOne/MacromediaFlashPlayer,其他的无非是面板不同,或者添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其......
  • 魔法方法、元类、设计模式
    目录魔法方法、元类、设计模式面向对象的魔法方法基于魔法方法的笔试题元类简介创建类的两种方式元类定制类的产生行为元类定制对象的产生行为魔法方法之双下new方法设计模......
  • Java静态变量和实例变量的区别以及使用方法
    带static的属性采用类名.属性调用代码示例:packagecom.powernode.oo;publicclassCat{/***静态方法*/publicstaticvoidm(){Sy......
  • 强化学习代码实战-02马尔科夫决策(蒙特卡洛方法)
    importnumpyasnpimportrandom#状态转移概率矩阵#很显然,状态4(第5行)就是重点了,要进入状态4,只能从状态2,3进入(状态2,3对于完成此项任务价值很大)P=np.array......
  • 魔法方法 元类
    今日内容面向对象的魔法方法魔法方法:类中定义的双下方法都称为魔法方法不需要认为调用在特定情况下会自动触发运行eg:__init__创建空对象之后自动出发给对象......
  • 魔法方法与元类
    面向对象的魔法方法魔法方法:类中定义的双下方法都称为魔法方法 不需要人为调用在特定的条件下回自动触发运行 eg:__init__创建空对象之后自动触发给对象添加独有的数......
  • vuex 刷新页面 数据不丢失的方法
    exportdefault{name:'app',//加入以下代码解决页面刷新时vueX数据丢失created(){//在页面刷新时将vuex里的信息保存到sessionStorage里window.ad......