1、将字符串中的字符倒序
//使用reverse
String str = "abcdefg";
StringBuffer sb =new StringBuffer(str);
System.out.println(sb.reverse().toString());
//自定义方法1
public static String strReverse(String str) {
StringBuffer sb = new StringBuffer();
for(int i =str.length()-1;i>=0;i--) {
sb.append(str.charAt(i));
}
return sb.toString();
}
2、将一个字符串中前n个字符和后n个字符组成一个新的字符串
public static String newSubStr(String str,int n) {
if(str.length()>n) {
String start = str.substring(0, n);
String end = str.substring(str.length()-n,str.length());
String newStr = start + end;
return newStr;
}else {
return str;
}
}
3、统计一个字符串中的字母、数字、空格、中文和标点的个数
public static int[] countCharater(String str) {
char []strChar = str.toCharArray();
int count[]=new int[5];
int j=0;
for(int i=0;i<str.length();i++) {
if('a'<=strChar[i]&&strChar[i]<='z'||'A'<=strChar[i]&&strChar[i]<='Z') {
count[0]++;
}else if(strChar[i]>='0'&&strChar[i]<='9') {
count[1]++;
}else if(strChar[i]==' ') {
count[2]++;
}else {
j++;
}
}
int chineseNum = getChineseNum(str);
int signNum = j-chineseNum;
count[3]=chineseNum;
count[4]=signNum;
return count;
}
/**中文字符 */
private int chCharacter = 0;
/**英文字符 */
private int enCharacter = 0;
/**空格 */
private int spaceCharacter = 0;
/**数字 */
private int numberCharacter = 0;
/**其他字符 */
private int otherCharacter = 0;
/***
* 统计字符串中中文,英文,数字,空格等字符个数
* @param str 需要统计的字符串
*/
public void count(String str) {
if (null == str || str.equals("")) {
System.out.println("字符串为空");
return;
}
for (int i = 0; i < str.length(); i++) {
char tmp = str.charAt(i);
if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
enCharacter ++;
} else if ((tmp >= '0') && (tmp <= '9')) {
numberCharacter ++;
} else if (tmp ==' ') {
spaceCharacter ++;
} else if (isChinese(tmp)) {
chCharacter ++;
} else {
otherCharacter ++;
}
}
System.out.println("字符串:" + str + "");
System.out.println("中文字符有:" + chCharacter);
System.out.println("英文字符有:" + enCharacter);
System.out.println("数字有:" + numberCharacter);
System.out.println("空格有:" + spaceCharacter);
System.out.println("其他字符有:" + otherCharacter);
}
4、统计字符串中中文个数
public static int getChineseNum(String str) {
int count = 0;
int strLen = str.length();
byte[] bt = str.getBytes();
int btLen = bt.length;
count = btLen - strLen;
return count/2;
}
/***
* 判断字符是否为中文
* @param ch 需要判断的字符
* @return 中文返回true,非中文返回false
*/
private boolean isChinese(char ch) {
//获取此字符的UniCodeBlock
Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
// GENERAL_PUNCTUATION 判断中文的“号
// CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
// HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub ==
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
System.out.println(ch + " 是中文");
return true;
}
return false;
}
public static void main(String[] args) {
String str = "adbs13姿z势12年概~3!a @x # $率 论zs12 szsgss 1234@#¥
說說愛き ,。?!%……&*()——{}【】";
CountCharacter countCharacter = new CountCharacter();
countCharacter.count(str);
}
5、统计一个字符串在另一个字符串中出现的次数
public static int getPatternRepeatNum(String a, String b) {
int num = 0;
String str = a;
int index = a.indexOf(b);
while (index != -1) {
num++;
str = str.substring(index + b.length());
index = str.indexOf(b);
}
return num;
}
public static int getPatternRepeatNum2(String a,String b) {
int num = 0;
String str = a;
int index = a.indexOf(b,0);
while(index!=-1) {
num++;
index = str.indexOf(b,index+b.length());
}
return num;
}
6、判断一个字符串是不是回文
public static boolean isPalindrome(String str) {
char[] ch = str.toCharArray();
boolean flag = false;
for (int i = 0; i < ch.length; i++) {
if (i == ch.length - 1) {
flag = true;
} else if (ch[i] == ch[ch.length - i - 1]) {
continue;
} else {
break;
}
}
return flag;
}
public static boolean isPalindrome2(String str) {
char[] ch = str.toCharArray();
int count=0;
boolean flag = false;
for (int i = 0; i < ch.length/2; i++) {
if (ch[i] == ch[ch.length - i - 1]) {
count++;
continue;
} else {
break;
}
}
if (count == ch.length/2) {
flag = true;
}else{
flag = false;
}
return flag;
}
7、 消除一个字符串中重复的字符
public static String removeRepeatedChar(String str) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);//根据下标得到字符
String s=String.valueOf(c);//转换成字符串
if (sb.indexOf(s) == -1) {
sb.append(s);
}
}
return sb.toString();
}
8、统计一个字符串数组中以指定字符串结尾的字符串个数
public int countEndStr(String str[], String s) {
int count = 0;
for (int i = 0; i < str.length; i++) {
if (str[i].endsWith(s)) {
count++;
}
}
return count;
}
9、将一个字符串中字符降序排列,组成新的字符串
public String sortByDesc(String str) {
char charArr[] = str.toCharArray();
for (int i = 1; i < charArr.length; i++) {
for (int j = 0; j < charArr.length - i; j++) {
if (charArr[j] < charArr[j + 1]) {
char temp = charArr[j + 1];
charArr[j + 1] = charArr[j];
charArr[j] = temp;
}
}
}
StringBuffer sb=new StringBuffer();
for (int i = 0; i < charArr.length; i++) {
sb.append(charArr[i]);
}
return sb.toString();
}
10、给一个属性名,获得一个标准的get方法名
public String getFunctionName(String str){
str="get"+str.substring(0,1).toUpperCase()+str.substring(1);
return str;
}
11、给一个标准的set方法名,获得属性名
public String getAttributeName(String str){
str=str.substring(3,4).toLowerCase()+str.substring(4);
return str;
}
12、将一个字符串中的英文空格和逗号替换为中文空格和逗号
public String replaSign(String str){
str=str.replace(" ", " ");
str=str.replace(",", ",");
return str;
}
13、将一个字符串中字符向左移动一个位置,第一个字符移至最后一个位置
public String moveString(String str){
char charArr[]=str.toCharArray();
char temp=charArr[0];
for(int i=1;i<charArr.length;i++){
charArr[i-1]=charArr[i];
}
charArr[charArr.length-1]=temp;
str="";
for(int i=0;i<charArr.length;i++){
str+=charArr[i];
}
return str;
}
14、统计一个字符串中,每一个英文单词的使用频度
public void countUseRate(String str,int[] countArr){
String[] strArr=str.split(","); //把字符串拆分成字符串数组
StringBuffer sb=new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
if(sb.indexOf(strArr[i])==-1){//判断该字符串在sb中有没有,如果没有表示没有统计过该字符串
int count=0;//统计有几个
for (int j = i; j < strArr.length; j++) {
if(strArr[i].equals(strArr[j])){//如果两个值相等
count++;
}
}
countArr[i]=count;
sb.append(strArr[i]);//把统计过的字符串放到sb中,不再统计
}
}
System.out.println(sb.toString());
}