java中一些字符串函数的作用
发布网友
发布时间:2022-04-24 07:50
我来回答
共5个回答
热心网友
时间:2022-04-22 12:46
java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。
String相关函数
1)substring()
它有两种形式,第一种是:String substring(int startIndex)
第二种是:String substring(int startIndex,int endIndex)
2)concat() 连接两个字符串
例:String s="Welcome to ";
String t=s.concat("AnHui");
3)replace() 替换
它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
String replace(char original,char replacement)
例如:String s=”Hello”.replace(’l',’w');
第二种形式是用一个字符序列替换另一个字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
4)trim() 去掉起始和结尾的空格
5)valueOf() 转换为字符串
6)toLowerCase() 转换为小写
7)toUpperCase() 转换为大写
8)length() 取得字符串的长度
例:char chars[]={’a',’b’.’c'};
String s=new String(chars);
int len=s.length();
9)charAt() 截取一个字符
例:char ch;
ch=”abc”.charAt(1);
返回值为’b’
10)getChars() 截取多个字符
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart 指定了子串开始字符的下标
sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。
target 指定接收字符的数组
targetStart target中开始复制子串的下标值
例:String s=”this is a demo of the getChars method.”;
char buf[]=new char[20];
s.getChars(10,14,buf,0);
11)getBytes()
替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()
例:
String s = “Hello!你好!”;
Java字符串函数
java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。
String相关函数
1)substring()
它有两种形式,第一种是:String substring(int startIndex)
第二种是:String substring(int startIndex,int endIndex)
2)concat() 连接两个字符串
例:String s="Welcome to ";
String t=s.concat("AnHui");
3)replace() 替换
它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
String replace(char original,char replacement)
例如:String s=”Hello”.replace(’l',’w');
第二种形式是用一个字符序列替换另一个字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
4)trim() 去掉起始和结尾的空格
5)valueOf() 转换为字符串
6)toLowerCase() 转换为小写
7)toUpperCase() 转换为大写
8)length() 取得字符串的长度
例:char chars[]={’a',’b’.’c'};
String s=new String(chars);
int len=s.length();
9)charAt() 截取一个字符
例:char ch;
ch=”abc”.charAt(1);
返回值为’b’
10)getChars() 截取多个字符
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart 指定了子串开始字符的下标
sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。
target 指定接收字符的数组
targetStart target中开始复制子串的下标值
例:String s=”this is a demo of the getChars method.”;
char buf[]=new char[20];
s.getChars(10,14,buf,0);
11)getBytes()
替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()
例:
String s = “Hello!你好!”;
byte[] bytes = s.getBytes();
12)toCharArray()
例:
String s = “Hello!你好!”;
char[] ss = s.toCharArray();
13)equals()和equalsIgnoreCase() 比较两个字符串
14)regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。
boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String
str2,int str2StartIndex,int numChars)
15)startsWith()和endsWith()
startsWith()方法决定是否以特定字符串开始
endWith()方法决定是否以特定字符串结束
16)equals()和==
equals()方法比较字符串对象中的字符
==运算符比较两个对象是否引用同一实例。
例:String s1=”Hello”;
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false
17)compareTo()和compareToIgnoreCase() 比较字符串
18)indexOf()和lastIndexOf()
indexOf() 查找字符或者子串第一次出现的地方。
lastIndexOf() 查找字符或者子串是后一次出现的地方。
19)trim去空格函数
例: String t1 = " abc de ";
System.out.println(t1.trim());// 去掉开头和结尾的空格“abc de”
20)split字符串分割
String y = "abc,de,fg,hi,jk";
String[] y1 = y.split(",");// 截取字符串所有","字符
for (int i = 0; i < y1.length; i++) {
System.out.print(y1[i]);// 输出结果abcdefghijk
}
21)append 添加或插入函数
StringBuffer zz1 = new StringBuffer(z1);// append 插入字符
zz1.append('|').append("hijk").append('/').append("lmn").append("opq");
System.out.println();
System.out.print(zz1);// 输出:abcdefg|hijk/lmnopq
StringBuffer构造函数
StringBuffer定义了三个构造函数:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
下面是StringBuffer相关的函数:
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();
6)insert() 插入字符串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
7)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)
热心网友
时间:2022-04-22 14:04
作用?我学过C++,String args[]与C++中的什么类似?如果是C++,想要输出字符串只要在下面写cout<<"...."<<endl;就可以了,void main()中的括号为空,而java中为什么要写String args[]呢?
class Example{
public static void main(String args[]){
System.out.println("This is a simple Java program.");
}
} 问题补充:既然String args[]或者String[] args表示给主方法传一个字符串数组,那么System.out.println(args[]);为什么是错误,args[]不就是那个字符串This is a simple Java program吗?
String args[]与This is a simple Java program是什么关系?如果没关系,为什么程序中去掉String args[]会出现错误?
不带String args[]的main函数和带String args[]的main函数有什么区别吗?String[] args 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test 那么你在cmd运行 java test a b c 时,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中调用你输入的这些变量了。
args[]不就是那个字符串This is a simple Java program吗?
-------完全不是的,你理解不对。这样好了,你在运行的时候加个参数,比如 java test XX。然后在你的main函数里面加这段话:System.out.println("arg is"+args[0]),然后看看输出是什么?
是不是这个:
This is a simple Java program
arg is XX
你还可以试试这样,在运行时输入java test xx yy zz,并且在你的main函数里面加这段话:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看看输出是什么?
是不是:
This is a simple Java program
arg is xx yy zz
现在你理解了吗。。。
如果没关系,为什么程序中去掉String args[]会出现错误?
--------之所以去掉会出错在于,不带String args[]的main函数和带String args[]的main函数,本质上已经不是同一个函数了,java 本身不存在不带String args[]的main函数,所以当然出错了。====================================================String[] args是main函数的形式参数,,可以用来获取命令行用户输入进去的参数。如果你是java的初学者,编写一些简单的小程序是用不到它的,但是你在写程序的时候不管用的到用不到,声明main函数的时候一定要在括号里写上它,否则会报错。
我再给你举个用到String[] args的例子,可能语法上有错误,因为我手边没有java的书,而且我也只是个本科生,水平有限,权当给你理解用。
class Example
{
public void main(String[] args)
{
System.out.println(args[0]);
System.out.println(args[1]);
}
}
那么这个程序在执行的时候就需要向main函数传递形式参数的值,好让main函数完成打印的功能。
注:String[] args显示args是一个String类型的数组,args[0]、args[1]是头两个元素。
上面那个小程序执行的时候是这样:
首先,和其他的java程序一样,在命令提示符那个框框里输入
javac Example.java
再输入
java Example straul good
后面两个字符串随便写什么,它们作为实参传入main函数,straul传入args[0],good传入args[1]。
那么屏幕会出现:
straul
good
这和在main函数里调用其他函数并且向被调用函数传递参数是一样的道理,只不过传给main函数罢了。
这是我的理解,可能有问题,不过凭我学java的所得,我就是这么理解的。
热心网友
时间:2022-04-22 15:39
indexOf
public int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引(以 Unicode 代码单元表示)。对于位于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch 的值,返回值是
this.charAt(k) == ch
为 true 的最小值 k。对于 ch 的其他值,返回值是
this.codePointAt(k) == ch
为 true 最小值 k。无论哪种情况,如果此字符串中没有这样的字符,则返回 -1。
参数:
ch - 一个字符(Unicode 代码点)。
返回:
在该对象表示的字符序列中第一次出现该字符的索引,如果未出现该字符,则返回 -1。
indexOf
public int indexOf(int ch,
int fromIndex)
从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。
在此 String 对象表示的字符序列中,如果带有值 ch 的字符的索引不小于 fromIndex,则返回第一次出现该值的索引。对于位于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch 值,返回值是
(this.charAt(k) == ch) && (k >= fromIndex)
为 true 的最小值 k。对于 ch 的其他值,返回值是
(this.codePointAt(k) == ch) && (k >= fromIndex)
为 true 的最小值 k。在任何情况下,如果此字符串中没有这样的字符在位置 fromIndex 处或其后出现,则返回 -1。
fromIndex 的值没有*。如果它为负,它和 0 具有同样的效果:将搜索整个字符串。如果它大于此字符串的长度,则它具有等于此字符串长度的相同效果:返回 -1。
所有索引都在 char 值中指定(Unicode 代码单元)。
参数:
ch - 一个字符(Unicode 代码点)。
fromIndex - 开始搜索的索引。
返回:
在此对象表示的字符序列中第一次出现的大于或等于 fromIndex 的字符的索引,如果未出现该字符,则返回 -1。
indexOf
public int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。返回的整数是
this.startsWith(str, k)
为 true 的最小值 k。
参数:
str - 任意字符串。
返回:
如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这样的子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
indexOf
public int indexOf(String str,
int fromIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。返回的整数是最小值 k,它满足:
k >= Math.min(fromIndex, str.length()) && this.startsWith(str, k)
如果不存在这样的 k 值,则返回 -1。
参数:
str - 要搜索的子字符串。
fromIndex - 开始搜索的索引位置。
返回:
从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
lastIndexOf
public int lastIndexOf(String str)
返回在此字符串中最右边出现的指定子字符串的索引。将最右边的空字符串 "" 视作发生在索引值 this.length() 处。返回的索引是
this.startsWith(str, k)
为 true 的最大值 k。
参数:
str - 要搜索的子字符串。
返回:
如果在此对象中字符串参数作为一个子字符串出现一次或多次,则返回最后一个这样的子字符串的第一个字符。如果它不作为一个子字符串出现,则返回 -1。
lastIndexOf
public int lastIndexOf(String str,
int fromIndex)
从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。返回的整数是最大值 k,它满足:
k <= Math.min(fromIndex, str.length()) && this.startsWith(str, k)
如果不存在这样的 k 值,则返回 -1。
参数:
str - 要搜索的子字符串。
fromIndex - 开始搜索的索引位置。
返回:
最后一次出现的指定子字符串在此字符串中的索引。
offsetByCodePoints
public int offsetByCodePoints(int index,
int codePointOffset)
返回此 String 中从给定的 index 处偏移 codePointOffset 个代码点的索引。文本范围内由 index 和 codePointOffset 给定的未配对代理项各计为一个代码点。
参数:
index - 要偏移的索引
codePointOffset - 代码点中的偏移量
返回:
String 的索引
抛出:
IndexOutOfBoundsException - 如果 index 为负或大于此 String 的长度;或者 codePointOffset 为正,并且以 index 开头的子字符串比 codePointOffset 具有更少的代码点;如果 codePointOffset 为负,并且 index 前的子字符串比 codePointOffset 的绝对值具有更少的代码点。
从以下版本开始:
1.5
热心网友
时间:2022-04-22 17:30
int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。
int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。
int indexOf(String str, int fromIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
热心网友
时间:2022-04-22 19:38
给你举一个简单的例子,讲解方法indexOf(int ch)
源文件Test.java
public class Test {
public static void main(String args[])
{
String str1="aacdabcd";
String str2="abcdabcd";
System.out.println(str1.indexOf(98));
System.out.println(str2.indexOf(98));
}
}
运行结果是5和1。
indexOf(int ch)方法的作用是字符在此字符串中第一次出现处的索引.。整型(int)数据它会转换成字符型(char),例中的98对应的是字符'b',字符'b'在字符串str1中第一次出现处是第5个位置(不是第6个,因为是从0开始计算的,这个应该知道吧),在字符串str2中第一次出现处是第1个位置。
其实实参98换成'b',运行结果是一样的。换成101则返回-1,101对应的是字符'e',字符串str1,str2中没有字符'e',方法返回的值是-1。.
能懂吗,不懂的话加QQ 1550752279.