java中截取字符串的方式
Posted 小虾米的java梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中截取字符串的方式相关的知识,希望对你有一定的参考价值。
1、length() 字符串的长度
例:char chars[]={\'a\',\'b\'.\'c\'};
String s=new String(chars);
int len=s.length();
2、charAt() 截取一个字符
例:char ch;
ch="abc".charAt(1); 返回\'b\'
3、getChars() 截取多个字符
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart指定了子串开始字符的下标,sourceEnd指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。接收字符的数组由target指定,target中开始复制子串的下标值是targetStart。
例:String s="this is a demo of the getChars method.";
char buf[]=new char[20];
s.getChars(10,14,buf,0);
4、getBytes()
替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()。
5、toCharArray()
6、equals()和equalsIgnoreCase() 比较两个字符串
7、regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。
boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String str2,int str2StartIndex,int numChars)
8、startsWith()和endsWith()
startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束
9、equals()和==
equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。
例:String s1="Hello";
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false
10、compareTo()和compareToIgnoreCase() 比较字符串
11、indexOf()和lastIndexOf()
indexOf() 查找字符或者子串第一次出现的地方。
lastIndexOf() 查找字符或者子串是后一次出现的地方。
12、substring()
它有两种形式,第一种是:String substring(int startIndex)
第二种是:String substring(int startIndex,int endIndex)
13、concat() 连接两个字符串
14 、replace() 替换
它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
String replace(char original,char replacement)
例如:String s="Hello".replace(\'l\',\'w\');
第二种形式是用一个字符序列替换另一个字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
15、trim() 去掉起始和结尾的空格
16、valueOf() 转换为字符串
17、toLowerCase() 转换为小写
18、toUpperCase() 转换为大写
19、StringBuffer构造函数
StringBuffer定义了三个构造函数:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
(1)、length()和capacity()
一个StringBuffer当前长度可通过length()方法得到,而整个可分配空间通过capacity()方法得到。
(2)、ensureCapacity() 设置缓冲区的大小
void ensureCapacity(int capacity)
(3)、setLength() 设置缓冲区的长度
void setLength(int len)
(4)、charAt()和setCharAt()
char charAt(int where)
void setCharAt(int where,char ch)
(5)、getChars()
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
(6)、append() 可把任何类型数据的字符串表示连接到调用的StringBuffer对象的末尾。
例:int a=42;
StringBuffer sb=new StringBuffer(40);
String s=sb.append("a=").append(a).append("!").toString();
(7)、insert() 插入字符串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
index指定将字符串插入到StringBuffer对象中的位置的下标。
(8)、reverse() 颠倒StringBuffer对象中的字符
StringBuffer reverse()
(9)、delete()和deleteCharAt() 删除字符
StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)
(10)、replace() 替换
StringBuffer replace(int startIndex,int endIndex,String str)
(11)、substring() 截取子串
String substring(int startIndex)
String substring(int startIndex,int endIndex)
(12)对正反斜杠的截取
java中split的应用:
Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回;
例如:
- String str="1234@abc";
- String[] a = str.split("@");
- System.out.println("处理结果: "+a[0]+","+a[1]); //输出的是: 处理结果: 1234,abc
对于分割的字符(串),通常是常见,普通的,没什么问题;
但是对某些特殊字符,如果字符(串)正好是正则的一部分,则需要转义才能使用,
这些字符有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \\等, 因它们是正则表达式中的一部分, 所以如果想用该字符本身, 这些字符需要进行转义才能表示它本身;
例如:
想用 | 竖线去分割某字符,因 | 本身是正则表达式中的一部分,所以需要 \\ 去转义,因转义使用 \\, 而这个 \\ 正好也是正则表达式的字符,所以还得用一个 \\ , 所以需要两个 \\\\。
- String str="5678|XYZ";
- String[] b = str.split("\\\\|"); //注意这里用两个 \\\\,而不是一个\\
- System.out.println("处理结果: "+b[0]+","+b[1]); //输出的是: 处理结果: 5678,XYZ
再来看看:
- String str="5678|XYZ";
- String[] b = str.split("|"); //注意直接使用|,该字符是正则表达式的一部分,
- String x="处理结果: ";
- for(int i=0;i<b.length;i++){
- x=x+b[i]+",";
- }
- System.out.println(x); //输出的是: 处理结果: 5,6,7,8,|,X,Y,Z,
可能我们人为主观感觉是用 | 来分割希望得到 5678 和 XYZ,因用特殊字符,实际结果是得到意外的结果;
今天下午就这个地方耗了几个小时,头晕才发现问题所在,555....
所以指定分割的字符(串)时,最好不要包含用于正则表达式本身的字符,如上面的红色字符;
以上是关于java中截取字符串的方式的主要内容,如果未能解决你的问题,请参考以下文章