这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战
倒叙输出的四种方式
public class ReverseString {
public static void main(String[] args) {
String str = "aabbccddaaccee932a";
reverseString1(str);
System.out.println("-----------------");
reverseString2(str);
System.out.println("-----------------");
reverseString3(str);
System.out.println("-----------------");
reverseStringMy(str);
}
/**
* string倒序输出
* 利用String类的toCharArray(),再倒序输出数组的方法
*
*/
private static void reverseString1(String str) {
char[] chr = str.toCharArray();
for (int i = chr.length - 1; i >= 0; i--) {
System.out.print(chr[i]);
}
System.out.println("\t");
}
/**
* string倒序输出
* 利用String类提供的subString()方法,利用递归的办法输出倒序字符串。
*/
private static void reverseString2(String str) {
if (str.length() == 1) {
System.out.println(str);
} else {
String subString1 = str.substring(0, str.length() - 1);
//subString2为字符串的倒数第一位
String subString2 = str.substring(str.length() - 1);
System.out.print(subString2);
reverseString2(subString1);
}
}
/**
* string倒序输出
* 定义成一个StringBuffer类,用StringBuffer类中的reverse()方法直接倒序字符串。
*
*/
private static void reverseString3(String str) {
StringBuffer buffer = new StringBuffer(str);
System.out.println(buffer.reverse());
}
/**
* 还是利用subString()方法,只不过循环输出
*
*/
private static void reverseStringMy(String str) {
StringBuffer a = new StringBuffer();
String subString2 = "";
for (int i = str.length(); i > 0; i--) {
subString2 = str.substring(i - 1, i);
a.append(subString2);
}
System.out.print("My:" + a);
System.out.println("\t");
}
}
去除数字的两种方法
public class RemoveNum {
/**
* 利用正则表达式去除字符串中的数字
*/
@Test
public void remove1() {
String str = "a123assume345contr7ibu8te9";
System.out.println(str.replaceAll("\\d+", ""));
}
/**
* 利用String的contains()方法去掉字符串中的数字
*/
@Test
public void remove2() {
String str = "a123assume345contr7ibu8te9";
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
String s = String.valueOf(chars[i]);
if (!"123456789".contains(s)) {
System.out.printf(s);
}
}
}
}
统计字符串中连续字符出现的个数的两种方法
如输入:wwwaacbbdaa 输出 3w2ac2bd2a
import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @业务描述: 统计字符串连续重复出现字符个数 如输入:wwwaacbbdaa 输出 3w2ac2bd2a
* @package_name:
* @project_name: bilibili
* @author: ratelfu@qq.com
* @create_time: 2019-06-29 22:39
* @copyright (c) ratelfu 版权所有
*/
public class CountCharacter {
/**
* 利用正则表达式
*/
@Test
public void count1() {
String str = "wwwaacbbdaa";
String s = "";
Matcher m = Pattern.compile("(\\w)\\1*").matcher(str);
while (m.find()) {
s += m.group().length() + m.group().subSequence(0, 1).toString();
}
System.out.println(s.replaceAll("1", ""));
}
/**
* 使用StringBuilder进行字符串处理
*/
@Test
public void getNumFromString() {
String string = "wwwaacbbdaa";
StringBuilder sb = new StringBuilder();
char c = string.charAt(0);
int count = 1;
for (int i = 1; i < string.length(); i++) {
char s = string.charAt(i);
if (s == c) {
count++;
} else {
if (count > 1) {
sb.append(count);
sb.append(c);
count = 1;
} else {
sb.append(c);
}
}
c = s;
}
if (count > 1) {
sb.append(count);
}
sb.append(c);
System.out.println(sb.toString());
}
}