首页 > 其他分享 >JTCR-处理字符串-15

JTCR-处理字符串-15

时间:2024-04-22 16:58:36浏览次数:24  
标签:JTCR 15 String index int StringBuffer 字符 字符串

Java 将字符串作为 String 类型的对象,不像其他语言,以字符数组的方式实现。

字符串创建之后就不可修改。进行修改相关操作返回的是新字符串,原先的字符串不会发生变化。将字符串以不可变的方式实现是为了更有效率。与 String 对应的 StringBufferStringBuilder 类创建之后可以修改。

三种字符串类型都声明为 final,不可能有子类;都实现了 CharSequence 接口。

String 构造器

String 的初始化方式如下

// ""
String a = new String();

char[] ch = {'a', 'b', 'c', 'd'};
// "abcd"
String b = new String(ch);
// "bc" 起始索引,个数
String c = new String(ch, 1, 2);
// "abcd"
String d = new String(b);

// 字节到字符的转换使用平台的默认编码
new String(byte[]);
new String(byte[], int startIndex, int num);

字节到字符的转换也可以自己指定字符编码方式,不过一般都是使用平台的默认编码。

new String(StringBuffer);
new String(StringBuilder);
// 使用扩展的 Unicode 字符集
new String(int[] codePoints, int startIndex, int charNum);

特定的字符串操作

对于每个字符串字面量,Java 都会将其自动转换成一个 String 对象。

String a = "abc";

+ 号连接两个字符串。

String 对象和非 String 对象使用 + 号时,非 String 对象转换成它的 String 形式然后再将两个 String 对象拼接。

对于 String.valueOf() 方法,传入内建类型时,返回其值的字符串表示;当传入类类型时,调用类的 toString() 方法,该方法定义在 Object 对象中。当将一个类和 String 对象拼接或者输出这个类时,调用这个类的 toString() 方法。

提取字符

char charAt(int index) 索引非负且需要处于有效范围,返回对应位置的单个字符。

void getChars(int start, int end, char[] target, int tStart) 从索引 start 开始,到 end-1 为止的所有字符复制到 target 中,从索引 tStart 开始填充。

byte[] getBytes() 将 String 对象中的字符使用平台默认编码转换为字节,返回字节数组。

char[] toCharArray() 将 String 对象的内容以字符数组的方式返回。

比较 String

boolean equals(Object str) 比较两个 String 对象的内容是否相同,相同为 true,否则 false。

boolean equalsIgnoreCase(String str) 功能与 equals 相同,区别在于此时忽略大小写。

boolean regionMatches(int startIndex, String s2, int s2StartIndex, int num) 调用该方法的 String 对象从 startIndex 索引开始的 num 个字符和 s2 的 s2StartIndex 索引开始的 num 个字符比较,如果所有字符的顺序和内容相同,则返回 true;否则返回 false。

boolean regionMatches(boolean ignoreCase, int startIndex, String s2, int s2StartIndex, int num) 与上一个方法功能相同,区别在于此时比较字符时不区分字符的大小写。

boolean startsWith(String str) 调用该方法的 String 对象是否以 str 开头,是则返回 true;否则 false。

boolean endsWith(String str) 调用该方法的 String 对象是否以 str 结尾,是则返回 true;否则 false。

boolean startsWith(String str, int index) 调用该方法的 String 对象从索引 index 开始的子串是否和 str 相同,是则返回 true;否则 false。

equals() 方法比较两个字符串的内容是否完全相同,而 == 操作符比较两个 String 变量是否引用相同的 String 对象。

int compareTo(String str) 以字典序比较两个字符串,调用该方法的 String 对象位于传入的 String 对象之前,则返回负整数;相等则返回 0;之后则返回正整数。

int compareToIgnoreCase(String str) 功能与上一个方法相同,区别在于比较时不区分大小写。

搜索 String

int indexOf(int ch)/int indexOf(String str) 寻找指定字符、字符串在调用该方法的 String 对象中是否出现,如果出现,返回第一次出现的索引位置;如果不存在,返回 -1。

int lastIndexOf(int ch)/int lastIndexOf(String str) 寻找指定字符、字符串在调用该方法的 String 对象中是否出现,如果出现,返回最后一次出现的索引位置;如果不存在,返回 -1。

int indexOf(int ch, int index)/int indexOf(String str, int index) 功能与重载方法相同,区别在于此时从 index 索引开始往后搜索。

int lastIndexOf(int ch, int index)/int lastIndexOf(String str, int index) 功能与重载方法相同,区别在于此时从 index 索引开始往前搜索。

修改 String

String substring(int index) 返回从 index 索引开始的所有字符构成的字符串。

String substring(int index, int end) 返回从 index 索引开始,到 end-1 索引为止的字符构成的字符串。

String concat(String str) 拼接字符串。

String replace(char origin, char replace) 用字符 replace 替换字符串中所有的字符 origin。

String replace(CharSequence origin, CharSequence replace) 用字符串 replace 替换字符串中所有的子串 origin。

String trim() 删除字符串中最开始和最后面的空白符。编码小于等于 32 的字符会被删除。

String strip() JDK11 引入,删除字符串中最开始和最后面的空白符。使得 Character.isWhitespace() 方法返回 true 的字符会被删除。

String stripLeading() JDK11 引入,删除字符串中最开始的空白符。

String stripTrailing() JDK11 引入,删除字符串中最后面的空白符。

static String valueOf(char[], int index, int num) 字符数组中从 index 索引开始的 num 个字符作为字符串返回。

String toLowerCase()

String toUpperCase()

static String join(CharSequence de, CharSequence... strs) 将 strs 中的多个字符串以 de 作为连接符拼接成一个字符串,返回。de 是一个字符串。

StringBuffer

构造器如下,StringBuffer 会预留 16 个字符的空间,剩余空间少于此大小才会重新分配空间。

// 创建一个预留 16 个字符空间的 StringBuffer 对象
new StringBuffer();
// 创建指定大小的 StringBuffer 对象
new StringBuffer(int size);
// 使用 Stirng 对象作为初始值创建  StringBuffer 对象,预留 16 个字符空间
new StringBuffer(String str);
// 使用字符序列作为初始值创建  StringBuffer 对象,预留 16 个字符空间
new StringBuffer(CharSequence chars);

int length() 返回当前字符个数。

int capacity() 返回当前 StringBuffer 的容量大小。

void ensureCapacity(int min) 设置已创建的 StringBuffer 对象的最小容量,实际容量由于效率原因可能比设置的大。

void setLength(int len) 设置 StringBuffer 对象的长度。如果设置的长度比当前实际长度长,则多出来的部分使用空字符填充;如果短,则去除比设置的长度长的部分字符。传入的参数必须非负。

char charAt(int index)

void setCharAt(int index, char ch) 在 index 索引位置使用传入的字符 ch。

void getChars(int start, int end, char[] target, int tStart) 将从索引 start 到 end-1 的内容复制到 target 数组,从索引 tStart 开始填充。target 数组必须能够容纳填充的内容。

StringBuffer append(type) 将传入的参数转换成字符串添加到 StringBuffer 对象末尾。

StringBuffer insert(int index, String s)
/StringBuffer insert(int index, char ch)
/StringBuffer insert(int index, Object o) 将传入的参数转换成字符串插入到 index 索引位置。

StringBuffer reverse() 反转内容顺序。

StringBuffer delete(int start, int end) 删除从索引 start 开始,到 end-1 为止的字符。

StringBuffer deleteCharAt(int index) 删除指定索引位置的字符。

StringBuffer replace(int start, int end, String s) 使用 s 替换从索引 start 开始,end-1 为止的字符。

String substring(int start)

String substring(int start, int end)

int indexOf(String s)

int lastIndexOf(String s)

StringBuilder

StringBuilder 和 StringBuffer 类似,区别在于,StringBuilder 是不同步的,即不是线程安全的。优点是有更好的性能。

参考

[1] Herbert Schildt, Java The Complete Reference 11th, 2019.
[2] https://websparrow.org/java/difference-between-trim-and-strip-methods-in-java

标签:JTCR,15,String,index,int,StringBuffer,字符,字符串
From: https://www.cnblogs.com/xdreamc/p/17490875.html

相关文章

  • JTCR-模块-14
    JDK9引入了模块,用于描述代码之间的关系和依赖,控制某模块是否可以被其他模块访问。模块基础一个模块由一组包和资源组成。模块定义在名为module-info.java的文件中,javac将这个文件编译成类文件,称为moduledescriptor。该文件仅能包含一个模块定义。模块定义的一般形式为://......
  • 字符串
    我要成为字符串领域大神!trie树/字典树字典树是什么思想?我们先设定一个根节点,一般为0,每次加入新字符串时都与其相连。比如我们要插入string,看起来就是这样然后如果我们又插入一个strange,就会变成这样也就是说插入的时候可以直接继承志曾经出现过的前缀部分,思想就是这么个思......
  • JTCR-lambda 表达式-13
    介绍lambda表达式本质上是一个匿名方法,用于实现函数式接口(functionalinterface)定义的方法。这就产生了匿名类。lambda也称为闭包(closures)。函数式接口是仅有一个抽象方法的接口。如Runnable接口仅有run()方法,该方法表明了接口的目的。函数式接口定义了lambda表达式的目......
  • JTCR-泛型-12
    什么是泛型具有参数化类型的类、接口或方法。具体的类型在运行时才确定。在泛型出现前通过使用Object引用也可以达到泛型的效果,但是缺乏类型安全检查,泛型添加了这一点。简单的泛型例子//T是类型参数,作为实际类型的占位符classGen<T>{Tv;Gen(To){v=o;......
  • 持续性学习-Day15(前端基础CSS3)
    参考教学视频:秦疆1.什么是CSSCascadingStyleSheet层叠样式表CSS3圆角、阴影、动画...浏览器兼容性CSS优势:内容和表现分离网页结构表现统一,可以实现复用样式十分的丰富建议使用独立html的css文件利用SEO,容易被搜索引擎收录2.入门<linkrel="styleshee......
  • JTCR-I/O,Try-with-Resources 及其他-11
    I/O基础Java的I/O操作通过流来实现。流是对输入、输出数据的抽象,每个流都和一个具体的物理实体关联,比如在输入中,流可以和键盘、磁盘文件或者网络输入等关联,虽然每个物理实体不同,但是流可以以同样的方式进行处理。Java定义了字节流和字符流。字节流处理的对象是二进制数据,以......
  • python中列表、字典和字符串的互相转换
    我们在python使用中经常会用到需要把字符串转为list或者字典,及把list或字典转为字符串(写文件,f.write()只能写字符串,插入数据库时,也只能用字符串)具体使用方法总结了一下:1、字符串转lists='a,b,c'l=s.split(',')  #把字符串s以逗号分割,分割出的list给到l ......
  • 上周热点回顾(4.15-4.21)
    热点随笔:· 博客园商业化之路-开篇:开源的脚步,商业化的出路 (博客园团队)· 经过腾讯云这波故障,我想表扬的点和学到的职场保命法则。 (why技术)· 一周涨15kStar的开源项目「GitHub热点速览」 (削微寒)· 面试官:为什么忘记密码要重置而不是告诉你原密码? (JavaGuide)·......
  • SQL Server 中将字符串按数字排序
    方法一:使用CAST或CONVERT我们可以使用CAST或CONVERT函数将字符串转换为数字,然后按照数字进行排序。示例如下:SELECT*FROMYourTableORDERBYCAST(YourColumnASINT)方法二:使用TRY_CAST或TRY_CONVERT如果我们不确定字符串中的所有值都可以成功转换为数字,我们可......
  • python os库将字符串转化为路径
    前言在python编程中,经常需要对文件进行读取操作,而os库提供了一些方法处理文件和目录的路径官方文档如下:https://docs.python.org/zh-cn/3/library/os.html本文主要记录如何将字符串转化为路径1.os.path.join()主要将多个字符串进行拼接,从而形成路径importosos.path.join......