Javase—String类习题,javasestring习题
分享于 点击 33938 次 点评:184
Javase—String类习题,javasestring习题
/**
* 1.字符串解析,现有一字符串,"卡巴斯基#杀毒软件#免费版#俄罗斯#",解析出每个元素。
*/
package com.Oracle.String_1;
public class Text01 {
public static void main(String[] args) {
String s="卡巴斯基#杀毒软件#免费版#俄罗斯#";
String[] str=s.split("#");
for(String n:str) {
System.out.println(n);
}
}
}
/**
* 2."那车水马龙的人世间,那样的来,那样的去,太匆忙"中最后一次出现“那”的位置
*/
package com.Oracle.String_1;
public class Text02 {
public static void main(String[] args) {
String s="那车水马龙的人世间,那样的来,那样的去,太匆忙";
System.out.println(s);
System.out.println("最后一次出现'那'的位置:"+s.lastIndexOf("那"));
}
}
/**
* 3.判断输入的字符串是否是 .java 结束
提示:public boolean endsWith(String suffix) (查帮助,查此方法的说明)
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text03 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
System.out.println("请输入一串字符");
String str=s.next();
if(str.endsWith(".java")) {
System.out.println("输入的字符串以.java结束");
}else {
System.out.println("输入的字符串不是以.java结束");
}
}
}
/**
* 4.有一身份证号,判断此为男还是女,基于此方法,
* 写一个算法,判断一个身份证号为男还是女。(身份证分15位和18位)
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text04 {
public static void main(String[] args) {
System.out.println("请输入您的身份证号:");
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
String str=s.next();
System.out.println(str.length());
// 当身份证为18位时,倒数第二位为单数则性别为男,双数则为女
if(str.length()==18) {
if(str.charAt(str.length()-2)%2==0) {
System.out.println("该身份证号码主人的性别为女");
}else {
System.out.println("该身份证号码主人的性别为男");
}
}
// 当身份证为15位时,倒数第一位为单数则性别为男,双数则为女
else if(str.length()==15) {
if(str.charAt(str.length()-1)%2==0) {
System.out.println("该身份证号码主人的性别为女");
}else {
System.out.println("该身份证号码主人的性别为男");
}
}
}
}
/**
* 5.有如下格式的字符串name-age-sex-address,解析出姓名,年龄等信息。
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text05 {
public static void main(String[] args) {
System.out.println("请按照name-age-sex-address的格式输入信息:");
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
String str=s.next();
String[] information=new String[4];
information=str.split("-");
for(String n:information) {
System.out.println(n);
}
}
}
/**
* 6.求出字符串中有多少种字符,以及每个字符的个数
static void printCharInfo(String str)
例如有字符串 str="apple is a apple.";
结果应该是a:3 p:4 l:2 e:2 :3 i:1 s:1 .:1
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text06 {
public static void main(String[] args) {
System.out.println("请输入一段字符:");
Scanner s=new Scanner(System.in);
String str=s.nextLine();
// str=str.replace(" ", "");
// System.out.println(str);
// System.out.println(str.length());
// for(int i=0;i<str.length();i++) {
// System.out.println(str.charAt(i));
// }
int n=0; //字符的个数
int varies=0; //字符的种类
for(char c=65;c<=90&&c>=65 || c<=122&&c>=97;c++) {
n=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)==c) {
n++;
// System.out.println(n);
}
if(c==90) {
c=97;
}
}
if(n!=0) {
System.out.println(c+":"+n);
varies++;
}
}
System.out.println("共有"+varies+"种字符");
s.close();
}
}
以下代码中需要用到的Resolve方法:package com.Oracle.String_1;
public class Resolve {
// 将字符串右侧的空格删除
public static String rtrim(String str) {
// String s=str;
while(str.endsWith(" ")) {
str=str.substring(0, str.length()-1);
}
return str;
}
// 将传入的字符串和其翻转后的字符串连接在一起
public static String concat(String str) {
str=str+Resolve.reverse(str);
return str;
}
// 将字符串进行翻转
public static String reverse(String s) {
StringBuffer sb=new StringBuffer(s);
return sb.reverse().toString();
// char[] c=new char[s.length()];
// for(int i=0;i<s.length();i++) {
// c[s.length()-1-i]=s.charAt(i);
// }
// s=new String(c);
// return s;
}
// 将字符串转为存储字符的数组
public static char[] toChar(String s) {
char[] c=new char[s.length()];
for(int i=0;i<s.length();i++) {
c[i]=s.charAt(i);
}
return c;
}
/**
* 将字符串右移n位
* @param str
* @param position
* @return
*/
public static String moveToRight(String str,int position) {
String right=str.substring(str.length()-position,str.length());
String left=str.substring(0,str.length()-position);
return right+left;
}
// public static String moveToRight(String str,int position) {
// char[] c=Resolve.toChar(str);
// char[] move=new char[position];
//// 储存从数组末尾移动到前端的元素
// int k=0;
// for(int i=c.length-position;i<c.length;i++) {
// move[k++]=c[i];
// }
//// 将数组中的元素向右移position位,直至到达数组最后一个元素
// for(int i=c.length-1;i-position>=0;i--) {
// c[i]=c[i-position];
// }
//// 将move中储存的原数组末尾的元素移到元素开头的位置
// while(k>0) {
// c[--k]=move[k];
// }
//// 将字符数组创建为字符串,赋给str
// str=new String(c);
// return str;
// }
/**
* 求5个字符串中最长的那个,把最长的字符串打印出来
* @param s
* @return
*/
public static String longestString(String[] s) {
String longest=s[0];
for(int i=0;i<s.length;i++) {
longest=longest.length()>s[i].length()?longest:s[i];
}
return longest;
}
/**
* 若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回-1。
* @param str
* @param subStr
* @return
*/
public static int stringAt(String str,String subStr) {
if(str.toLowerCase().contains(subStr.toLowerCase())) {
return str.toLowerCase().indexOf(subStr.toLowerCase());
}
return -1;
}
// 判断是否是回文
public static boolean rotate(String s) {
if(s.equals(Resolve.reverse(s))) {
return true;
}
return false;
}
}
第七题:/**
* 7.定义一个方法,用来去掉字符串右边的空格
String rtrim(String str)
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text07 {
public static void main(String[] args) {
System.out.println("请输入一段字符:");
Scanner s=new Scanner(System.in);
String str=s.nextLine();
String string=Resolve.rtrim(str);
System.out.println(string);
s.close();
}
}
/**
* 8.定义一个方法,将str所指字符串的正序和反序进行连接,例如 "ok"->"okko"
String concat(String str);
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text08 {
public static void main(String[] args) {
System.out.println("请输入一段字符:");
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
String str=s.nextLine();
System.out.println(Resolve.concat(str));
}
}
/**
* 9.字符串右移n位,例如 "hello world" 右移两位 后ldhello wor
要求写一个方法实现此功能,方法的格式是
String moveToRight(String str,int position)
str:需要移动的字符串
p:右移的位数
*/
package com.Oracle.String_1;
import java.util.Scanner;
public class Text09 {
public static void main(String[] args) {
System.out.println("请输入一段字符:");
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
String str=s.nextLine();
System.out.println("请输入您要右移的位置:");
int position=s.nextInt();
str=Resolve.moveToRight(str, position);
System.out.println(str);
}
}
//10.求5个字符串中最长的那个,把最长的字符串打印出来
package com.Oracle.String_1;
public class Text10 {
public static void main(String[] args) {
String[] s=new String[]{"meet","advent","roost","chineseAndEnglish","program"};
System.out.println(Resolve.longestString(s));
}
}
/**
* 11.若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回-1。
*/
package com.Oracle.String_1;
public class Text11 {
public static void main(String[] args) {
String s1="myyname";
String s2="Name";
System.out.println(Resolve.stringAt(s1, s2));
}
}
/**
* 12.判断一个字符串是否是回文
*/
package com.Oracle.String_1;
public class Text12 {
public static void main(String[] args) {
String s1="12331";
System.out.println(Resolve.rotate(s1));
String s2="12321";
System.out.println(Resolve.rotate(s2));
}
}
/**
* 13.如下字符串,01#张三#20-02#李四#30-03#王五#40。。。。。。,解析每个人分数多少。样式如下:
01 张三 20 02 李四 30 03 王五 40。并且计算总分。
*/
package com.Oracle.String_1;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Text13 {
public static void main(String[] args) {
Pattern p=Pattern.compile("#[0-9]{1,3}");
String s="01#张三#20-02#李四#30-03#王五#40";
String[] str=s.split("-");
System.out.println(Arrays.toString(str));
String[] score=new String[str.length];
int sum=0;
for(int i=0;i<score.length;i++) {
Matcher m=p.matcher(str[i]);
@SuppressWarnings("unused")
boolean b=m.find();
score[i]=m.group();
score[i]=m.group().substring(1, score[i].length());
// System.out.println(score[i]);
// System.out.println(Integer.valueOf(score[i]));
sum+=Integer.valueOf(score[i]);
}
System.out.println("总分为:"+sum);
}
}
第二部分:
/**
* 1.已知字符串:"this is a test of java". 按要求执行以下操作:
(1) 统计该字符串中字母s出现的次数
(2) 取出子字符串"test"
(3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
*/
package com.Oracle.String_2;
import java.util.Arrays;
public class Text1 {
public static void main(String[] args) {
String s="this is a test of java";
// (1) 统计该字符串中字母s出现的次数
System.out.println(s.length()-s.replace("s", "").length());
// (2) 取出子字符串"test"
System.out.println(s.replace("test", ""));
// (3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
// 方法一:
char[] c1=new char[s.length()];
for(int i=0;i<c1.length;i++) {
c1[i]=s.charAt(i);
}
System.out.println(Arrays.toString(c1));
// 方法二:
char[] c2=s.toCharArray();
System.out.println(Arrays.toString(c2));
// (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
c1[0]=Character.toUpperCase(c1[0]);
for(int i=0;i<c1.length;i++) {
// System.out.println(s.substring(i, i+1));
if(s.substring(i, i+1).equals(" ")) {
// System.out.println(s.substring(i+1, i+2));
// System.out.println(s.substring(i+1, i+2).toUpperCase());
c1[i+1]=Character.toUpperCase(c1[i+1]);
}
}
String str=new String(c1);
System.out.println(str);
// (5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
// 方法一:
StringBuffer strb=new StringBuffer(s);
strb=strb.reverse();
System.out.println(strb);
// 方法二
for(int i=0;i<c1.length;i++) {
c2[i]=c1[c1.length-i-1];
}
String string=new String(c2);
System.out.println(string);
// (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
String[] st=s.split(" ");
System.out.println(Arrays.toString(st));
}
}
/**
* 2.获取一个字符串在另一个字符串中出现的次数
例如,获取"kk"在"abkkcdkkefkkskk"中出现的次数
*/
package com.Oracle.String_2;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Text2 {
public static void main(String[] args) {
int n=0;
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
System.out.println("请输入一串字符");
String str=s.nextLine();
Pattern p=Pattern.compile("[k]{2}");
Matcher m=p.matcher(str);
while(m.find()) {
n++;
}
System.out.println("kk在该字符串中出现的次数为:"+n);
}
}
/**
* 3.模拟一个trim方法,去除字符串两端的空格
思路: 1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止,结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
*/
package com.Oracle.String_2;
import java.util.Scanner;
public class Text3 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner s=new Scanner(System.in);
System.out.println("请输入一串字符");
String str=s.nextLine();
str=trim(str);
System.out.println("去掉前后空格后为:"+str);
}
public static String trim(String str) {
while(str.substring(0, 1).equals(" ")) {
str=str.substring(1,str.length());
}
while(str.substring(str.length()-1, str.length()).equals(" ")) {
str=str.substring(0,str.length()-1);
}
return str;
}
}
相关文章
- 暂无相关文章
用户点评