1、计算一个字符串里大写小写乱码的字符数目:
s1.charAt(i):返回 char指定索引处的值。
Ascall码可以直接在字符上比大小
package cn.njupt;
public class StringPointer {
public static void main(String[] args) {
String s1 = "aaaABNiiippLLLbbb@#$%^&";
int m = 0;int n = 0;int k = 0;
for(int i = 0;i < s1.length();i++) {
if(s1.charAt(i) <= 'Z' && s1.charAt(i) >= 'A' ) {
m++;
}else if (s1.charAt(i) <= 'z' && s1.charAt(i) >= 'a' ) {
n++;
}else {
k++;
}
}
System.out.println("大写:" + m + ",小写:" + n + ",其他:" + k);
}
}
输出:大写:6,小写:11,其他:6
2、将一个字符串第一个字母变为小写,其他变成大写:
toLowerCase() 变成小写
toUpperCase() 变成大写
concat() 连接字符
substring() 剪切字符串
想用s1.charAt(i)和循环将字符串变成字符然后改变大小写再拼接的,好像字符改变大小只能通过Ascall码???
package cn.njupt;
public class StringPointer {
public static void main(String[] args) {
String s1 = "aaaABNiiippLLLbbb";
String s2 = s1.substring(0, 1).toLowerCase().concat(s1.substring(1).toUpperCase());
System.out.println(s2);
}
}
输出:aAAABNIIIPPLLLBBB
3、将一个数组{1,2,3}变成[1,2,3]:
- 用s.substring(0, 5)做一个字符串的切割:
package cn.njupt;
public class StringPointer {
public static void main(String[] args) {
int[] arr = {1,2,3};
String s = new String();
for (int i = 0; i < arr.length; i++) {
s += arr[i] + ",";
}
System.out.print( "[" + s.substring(0, 5) + "]");
}
}
- 也可以用循环条件做,但是我觉得略感啰嗦:
package cn.njupt;
public class StringPointer {
public static void main(String[] args) {
int[] arr = {1,2,3};
String s = "[";
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1) {
s = s + arr[i] + "]";
}else {
s = s + arr[i] + ",";
}
}
System.out.print(s);
}
}
4、键入数组/字符串的反转:
关键:创建另一个数组/字符串来从后面往前存储原来的数组/字
- 键入数组的反转:
在没有学习动态数组ArrayList之前,我们的数组都是要指定数组长度然后一个一个键入的(有别的方法么?)
package cn.njupt;
import java.util.Scanner;
public class StringPointer {
private static Scanner sc;
public static void main(String[] args) {
// 键盘输入数组的反转
int n = 10;
int[] arr1 = new int[n];
for (int i = 0; i < arr1.length; i++) {
sc = new Scanner(System.in);
arr1[i] = sc.nextInt();
}
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[arr1.length - i - 1];
}
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]);
}
}
}
- 键入字符串的反转
关键是要将字符串转换为字符数组char[] chr = str1.toCharArray();,然后用数组的方式反转,最后再拼接成字符串
package cn.njupt;
import java.util.Scanner;
public class ArrayReverse {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str1 = sc.nextLine();
char[] chr = str1.toCharArray();
String str2 = "";
for (int i = 0; i < str1.length(); i++) {
str2 += chr[str1.length() - i -1];
}
System.out.println(str2);
}
}
5、大串中小串出现的次数:
index = max.indexOf(min) 返回小串在大串中的位置索引
max.substring(index + min.length()) 截取大串
步骤:
- 定义计数器count和指标index;
- 用while循环,max.indexOf获得小串的指标位置(如果没有返回-1,循环结束)
- count++,max.subString从index+小串长度截取一下
- 转2
package cn.njupt;
public class ArrayReverse {
public static void main(String[] args) {
String max = "abfbadjkllskadjkl asjdhjashjkladhasdhjklsdhasjkl ";
String min = "jkl";
int count = 0;
int index = 0;
while( (index = max.indexOf(min)) != -1) {
count++;
max = max.substring(index + min.length());
}
System.out.println(count);
}
}