前几天发了一些题目,主要是对字符串的一些操作。下面把这些题目一一列出来。
1、删除给定字符串
2、倒置字符串
3、去除随机生成字符串中的重复字符,并将新的字符串输出。
4、检查字符串是否是回文字符串
回文字符串:如果一个字符串,不管从前往后读,还是从后往前读,都是一样的,如:12321,eve,则称为回文字符串。
5、替换字符串中的部分字符。
实现要求:
1)、判断要替换的字符串是否存在,并需要遍历找到要替换的字符串的位置。
2)、在替换的字符串位置上进行替换,获得替换后生成的新字符串。
6、验证码是目前网络中应用最广泛的一种安全机制,可防止一些不良信息的侵入。随着网络的发展,验证码也由原本简单的数字变成汉字校验。
本实验要求使用Java分别获取四种验证码。
1)、由数字0-9组成的全数字验证码
2)、由英文字母和标点符号组成的字符验证码
3)、全部由中文组成的验证码
4)、字符+数字的混合验证码
以下是解决方法。
1、删除给定字符串:
有一个replace(charoldChar, charnewChar)方法,作用是返回一个新的字符串,用
newChar
替换此字符串中出现的所有oldChar
。代码如下:
?
class="java">String s = "123456789"; s = s.replace("567", "");
?
还有一个方法就是split(Stringregex),根据regex来拆分字符串,返回值是String数组。代码如下:
?
String s = "123456789"; String[] str = s.split("456"); String str2 = ""; for (int i = 0; i < str.length; i++) { str2 = str2 + str[i]; }
?
目前只知道这两种方法,如果有其他方法,望不吝赐教。
2、倒置字符串。
这一题可以定义一个中间变量,把首尾的字母进行交换,这是在C语言中是这样解决的。我在网上也搜过,有用递归的。下面给上代码:
public static void reverse (String str){
if (str.length() == 1){
System.out.print(str);
}
else{
String str1 = str.substring(0, str.length()-1);
String str2 = str.substring(str.length()-1);
System.out.print(str2);
reverse(str1);
}
}
public static void main(String[] args) {
String str = "123456789";
reverse(str);
}
之后才发现,可以把字符串定义为StringBuffer,里面有这样一个方法reverse(),被字符串序列的反转所取代,这就简单了,代码如下:
StringBuffer s = new StringBuffer( "123456");
s.reverse();
3、去除随机生成字符串中的重复字符,并将新的字符串输出。
public static void main(String[] args) {
String s = "abcdefghijklmnopqrstuvwxyz";
String str = "";
String str2 = "";
/*随机生成字符串*/
for (int i = 0; i < s.length(); i++) {
char c = s.charAt((int) (Math.random() * 26));//在字符串s中随机取一个字符
str = str + c;//str是随机生成的字符串
}
System.out.println(str);
/*去除重复字符*/
for (int j = 0; j < str.length(); j++) {
char c = str.charAt(j);
//看字符c在字符串str中是否存在
if (!(str2.contains(c + ""))) {
str2 = str2 + c;//str2是新的字符串
}
}
System.out.println(str2);
// Random r = new Random();
// System.out.println(r.nextInt(10));
}
去除字符串也可以用数组的方法,这里就不上代码了。
4、检查字符串是否是回文字符串
可以用比较首尾字符是否相等来解决这个题。
也可以把字符串倒置,比较两个字符串是否相等。
有一个方法也应该记一下charAt(int index),返回index处的一个字符。
5、替换字符串中的部分字符。
有一个要求是判断要替换的字符串是否存在,用String中的contains(CharSequence s)方法,返回值是boolean类型的。存在为true,不存在为false。
替换字符串用的是replace()方法,第一题就是的。
6、获取4位的随机验证码,在第三题就有代码,只是要中文的验证码,就只能添加一些中文字库,没找到其他什么办法。
?
总结一下,这几天学的String里面的方法。
charAt(int index),返回index处的一个字符。
compareTo(String anotherString),比较两个字符串。返回值为int类型。
concat(String str),连接字符串。返回值为String。
contains(CharSequence s),字符串中是否包含指定的字符串。返回true或者false。
indexOf(String str),返回指定子字符串在字符串中第一次出现的位置。
length(),返回字符串的长度。
replace(char oldChar,char newChar),用newChar替换oldChar得到一个新的字符串。
split(String regex),根据给定的regex拆分字符串,返回值为字符串数组。
substring(int start),返回一个从start这个位置开始到字符串结束的子字符串。
substring(int start,int end),返回一个从start开始到end-1的字符串,不包括end这个位置的字符。
StringBuffer里面的方法:
append(char c),在字符串后面添加一个字符。
reverse(),将当前字符串倒置。
就这些了,我是小白,有什么错误的地方欢迎指正。