Java基础--字符串、正则表达式

本文详细介绍了 Java 中 String 类的各种构造方法及其使用场景,包括如何利用 String 类进行字符串操作,如拼接、查找、替换等。此外,还深入探讨了字符串与正则表达式的交互方式。

字符串

String[字符串]

构造方法摘要

String() 
初始化一个新创建的 String 对象,使其表示一个空字符序列。

 

String(byte[] bytes) 
通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。

 

String(byte[] bytes, Charset charset) 
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。

 

String(byte[] bytes, int offset, int length) 
通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。

 

String(byte[] bytes, int offset, int length, Charset charset) 
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。

 

String(byte[] bytes, int offset, int length, String charsetName) 
通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。

 

String(byte[] bytes, String charsetName) 
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。

 

String(char[] value) 
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。

 

String(char[] value, int offset, int count) 
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。

 

String(int[] codePoints, int offset, int count) 
分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。

 

String(String original) 
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。

 

String(StringBuffer buffer) 
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。

 

String(StringBuilder builder) 
分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。

 

 

 

方法摘要

boolean

contains(CharSequence s) 
当且仅当此字符串包含指定的 char 值序列时,返回 true。

boolean

contentEquals(StringBuffer sb) 
将此字符串与指定的 StringBuffer 比较。

boolean

equals(Object anObject) 
将此字符串与指定的对象比较。若二者字符序列相等时返回true,否则返回false。

boolean

equalsIgnoreCase(String anotherString) 
将此 String 与另一个 String 比较,不考虑大小写。

boolean

isEmpty() 
当且仅当 length() 为 0 时返回 true。

boolean

matches(String regex) 
告知此字符串是否匹配给定的正则表达式

boolean

startsWith(String prefix) 
测试此字符串是否以指定的前缀开始。

boolean

startsWith(String prefix, int toffset) 
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。

boolean

endsWith(String suffix) 
测试此字符串是否以指定的后缀结束。

int

codePointAt(int index) 
返回指定索引处的字符(Unicode 代码点)。

int

compareTo(String anotherString) 
按字典顺序比较两个字符串。

int

compareToIgnoreCase(String str) 
按字典顺序比较两个字符串,不考虑大小写。

int

hashCode() 
返回此字符串的哈希码。

int

indexOf(int ch) 
返回指定字符在此字符串中第一次出现处的索引。

int

indexOf(int ch, int fromIndex) 
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

int

indexOf(String str) 
返回指定子字符串在此字符串中第一次出现处的索引。

int

indexOf(String str, int fromIndex) 
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

int

lastIndexOf(int ch) 
返回指定字符在此字符串中最后一次出现处的索引。

int

lastIndexOf(int ch, int fromIndex) 
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

int

lastIndexOf(String str) 
返回指定子字符串在此字符串中最右边出现处的索引。

int

lastIndexOf(String str, int fromIndex) 
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

int

length() 
返回此字符串的长度。

String

concat(String str) 
将指定字符串连接到此字符串的结尾。

static String

copyValueOf(char[] data) 
返回指定数组中表示该字符序列的 String。

static String

copyValueOf(char[] data, int offset, int count) 
返回指定数组中表示该字符序列的 String。

String

replace(char oldChar, char newChar) 
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

String

substring(int beginIndex) 
返回一个新的字符串,它是此字符串的一个子字符串。

String

substring(int beginIndex, int endIndex) 
返回一个新字符串,它是此字符串的一个子字符串。

String

toLowerCase() 
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。

String

toUpperCase() 
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

String

trim() 
返回字符串的副本,忽略前导空白和尾部空白。

static String

valueOf(char[] data) 
返回 char 数组参数的字符串表示形式。

static String

valueOf(char[] data, int offset, int count) 
返回 char 数组参数的特定子数组的字符串表示形式。

static String

valueOf(double/float/int/long/chat/boolean/Object 对应参数x) 
返回 x 参数的字符串表示形式。

String[]

split(String regex) 
根据给定正则表达式的匹配拆分此字符串。

byte[]

getBytes() 
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

byte[]

getBytes(String charsetName) 
使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

char

charAt(int index) 
返回指定索引处的 char 值。

char[]

toCharArray() 
将此字符串转换为一个新的字符数组。

 

 

StringBuffer[线程安全的可变字符序列] & StingBuilder[线程不同步的可变字符序列]

主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。

StringBuffer

append(char[] str) 
将 char 数组参数的字符串表示形式追加到此序列。

StringBuffer

append(char[] str, int offset, int len) 
将 char 数组参数的子数组的字符串表示形式追加到此序列。

StringBuffer

append(Object obj) 
追加 Object 参数的字符串表示形式。

StringBuffer

append(String/StringBuffer str/sb) 
将指定的字符串/Stringbuffer追加到此字符序列。

StringBuffer

appendCodePoint(int codePoint) 
将 codePoint 参数的字符串表示形式追加到此序列。

StringBuffer

insert(int offset, char[] str) 
将 char 数组参数的字符串表示形式插入此序列中。

StringBuffer

insert(int index, char[] str, int offset, int len) 
将数组参数 str 的子数组的字符串表示形式插入此序列中。

StringBuffer

insert(int offset, Object obj) 
将 Object 参数的字符串表示形式插入此字符序列中。

StringBuffer

insert(int offset, String str) 
将字符串插入此字符序列中。

StringBuffer

reverse() 
将此字符序列用其反转形式取代。

StringBuffer

replace(int start, int end, String str) 
使用给定 String 中的字符替换此序列的子字符串中的字符。

StringBuffer

delete(int start, int end) 
移除此序列的子字符串中的字符。

StringBuffer

deleteCharAt(int index) 
移除此序列指定位置的 char。

void

setCharAt(int index, char ch) 
将给定索引处的字符设置为 ch。

int

capacity() 
返回当前容量。

 

 

正则表达式[强大的字符串处理工具,简化书写]

优点:简化对字符串的复杂操作

弊端:符号定义越多,正则越长,阅读性越差

具体操作功能:

|--匹配:就是String类中的matches()

String qq = "123a454";

String regex = "[1-9]\\d{4,14}";

boolean flag = qq.matches(regex);

|--切割:就是String类中的split()

|--替换:就是String类中的replaceAll()

   若regex中有定义组,可以在第二参数中通过$符号获取正则表达式中已有的组

|--获取:

1·将正则表达式封装成对象 Pattern p = Pattern.compile(reg);

2·将正则对象和要操作的字符串相关联,获取正则匹配器引擎    Matcher m  = p.matcher(str);

3·通过Matcher对象中的方法对字符串进行各种操作

boolean

matches(String regex) 
告知此字符串是否匹配给定的正则表达式

String

replaceAll(String regex, String replacement) 
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

String[]

split(String regex) 
根据给定正则表达式的匹配拆分此字符串。

### 回答1: 文本清洗是指对文本数据进行处理,去除无用信息,使其更加规范化和易于处理。在Java中,可以使用正则表达式来进行文本清洗。 正则表达式是一种用来描述字符串模式的语言,可以用来匹配、查找和替换文本中的特定模式。在Java中,可以使用java.util.regex包中的类来操作正则表达式。 常见的文本清洗操作包括去除空格、标点符号、HTML标签等。例如,可以使用正则表达式来去除字符串中的所有空格: String str = "hello world"; str = str.replaceAll("\\s+", ""); 这里的\\s表示空格字符,+表示匹配一个或多个空格字符。使用replaceAll()方法可以将所有匹配的空格字符替换为空字符串。 除了去除空格,还可以使用正则表达式来去除标点符号: String str = "hello, world!"; str = str.replaceAll("[\\p{Punct}&&[^']]+", ""); 这里的\\p{Punct}表示所有标点符号,&&[^']表示除了单引号之外的所有标点符号。使用replaceAll()方法可以将所有匹配的标点符号替换为空字符串。 另外,如果需要去除HTML标签,可以使用以下代码: String str = "<p>hello, <b>world</b>!</p>"; str = str.replaceAll("<[^>]+>", ""); 这里的<[^>]+>表示匹配所有HTML标签,使用replaceAll()方法可以将所有匹配的HTML标签替换为空字符串。 总之,使用正则表达式可以方便地进行文本清洗,使得文本数据更加规范化和易于处理。 ### 回答2: 随着大量数据的产生和积累,文本清洗成为数据处理的一个重要步骤。在文本处理中,可能会遇到一些格式上的问题,比如HTML标签、非法字符、标点符号等等,这些问题会影响数据的分析和使用。正则表达式是一种强大的文本匹配和处理工具,可以帮助我们快速而准确地筛选和清洗文本数据。 在Java中,使用正则表达式进行文本清洗需要使用java.util.regex包中的类和方法。其中最常用的类是Pattern和Matcher。Pattern表示正则表达式,而Matcher则是用来匹配Pattern和输入字符串的工具。 在使用正则表达式进行文本清洗时,首先需要定义正则表达式的模式。比如,假设我们需要清洗一段HTML代码,把其中的标签去掉,可以定义如下正则表达式: String pattern = "<[^>]*>"; 这个正则表达式的含义是匹配尖括号包含的任意字符,其中^表示非,即除了尖括号以外的其他字符。[^>]*表示匹配任意个数的非尖括号字符。在这种情况下,这个正则表达式将会匹配所有的HTML标签,然后我们就可以使用Matcher将其替换为空字符串,例如: String html = "<html><body><p>Hello World!</p></body></html>"; String pattern = "<[^>]*>"; String cleanedHtml = html.replaceAll(pattern, ""); 这样就可以把原始HTML代码中的所有标签去掉,得到干净的文本数据。 除了HTML标签以外,还可能会遇到其他需要清洗的问题。比如,有些文本中可能包含了“垃圾”字符,如控制字符、特殊符号等等,这些字符可能无法正确地存储、处理或显示。在这种情况下,可以使用正则表达式来删除这些字符,例如: String text = "Hello\u0009World!\u000d\u000a"; String pattern = "[\u0000-\u001f\u007f]"; String cleanedText = text.replaceAll(pattern, ""); 这个正则表达式的含义是匹配ASCII码表中的控制字符和删除字符(\u0000-\u001f和\u007f),然后将其替换为空字符串。这样就可以去掉文本中的垃圾字符,得到干净的文本数据。 总之,正则表达式是一种强大的文本匹配和处理工具,可以帮助我们快速准确地清洗文本数据。在使用正则表达式时,需要对要处理的文本有一定的了解,并根据需要定义合适的正则表达式模式。正则表达式虽然强大,但也容易出错,因此需要仔细检查和调试。同时也需要注意正则表达式的效率问题,避免因过度使用正则表达式而导致程序性能下降。 ### 回答3: 文本清洗是计算机处理自然语言和文本数据的一项重要任务。其中,正则表达式是一种强大的工具,常用于文本清洗中去除不必要的字符和格式,从而增加文本数据的可读性、可解析性和可分析性。在Java编程语言中,使用正则表达式进行文本清洗也是十分常见的,下面将介绍练习Java字符串正则表达式之文本清洗的方法和技巧。 首先,需要了解正则表达式的基本语法和符号Java中的正则表达式可以使用java.util.regex包中的类来实现,例如Pattern和Matcher。在使用正则表达式进行文本清洗时,需要注意以下几点: 1. 使用String类的replaceAll方法可以方便地进行字符串替换和清洗。其中,第一个参数是正则表达式,第二个参数是替换后的字符串。例如: String str = "Hello, World!"; str = str.replaceAll("[, !]", ""); // 输出结果:HelloWorld 2. 匹配多种模式可以使用“|”符号。例如,想要匹配“a”或“b”或“c”,可以写成: String pattern = "a|b|c"; 3. 需要匹配特殊字符时需要使用转义符“\”。例如,匹配句子中的引号可以写成: String pattern = "\".*?\""; 4. 使用“.*?”表示非贪婪匹配,尽可能少地匹配字符。例如,要匹配行末的换行符可以写成: String pattern = "\r?\n.*?"; 5. 使用“^”和“$”表示字符串的开头和结尾。例如,如果要匹配全是字母的行可以写成: String pattern = "^[a-zA-Z]+$"; 综上所述,正则表达式Java字符串操作中的重要工具,可以通过其强大的匹配功能实现文本清洗和格式化。在使用过程中需要熟悉其基本语法和符号,并结合具体的需求进行灵活运用。随着深度学习和自然语言处理的快速发展,正则表达式在文本清洗中的应用也将愈加广泛和重要。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值