JAVA字符串去重的几种方式

方式一(String)

//传参:str="qw23eqr123e4tt"
public String ARFA(String str) {  
  //创建一个空字符串用于接收去重后的字符串
  String arfa="";  
  //遍历字符串str
  for (int i = 0; i < str.length(); i++) {
   //获取字符串中下标为i的字符(char类型)
   char ch = str.charAt(i); 
   //如果字符串没有重复,即:每个字符的下标都会等价于该字符第一次出现时的下标
   //判断字符串第一次出现ch字符时的下标是否等于i
   if (str.indexOf(ch)==i) {
    //将ch字符转化为String类型,并添加到字符串arfa的末尾
    arfa=arfa.concat(String.valueOf(ch));
   }
  }
  return arfa;
}
//去重结果:qw23er14t

方式二(StringBuffer)

方式二与方式一同理,方式二中的StringBuffer能够将char类型字符直接拼接,而不需要转化为String类型

//传参:str="qw23eqr123e4tt"
public String ARFA2(String str) {
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < str.length(); i++) {
   if (str.indexOf(str.charAt(i))==i) {
    sb.append(str.charAt(i));
   }
  }
  return sb.toString();
 }
 //去重结果:qw23er14t

方式三(正则表达式)

/**
	1.将传参str转化为StringBuffer类型
	2.调用reverse()可以将StringBuffer类型sb实现倒序
	3.调用toString()转化为String类型可以调用replaceAll(,)方法
	4.replaceAll("(.)(?=.*\\1)", "")方法可以实现:
		从前往后遍历,某字符出现的第二次,则第一出现的字符会被删除
	5.再次将String类型rs转化为StringBuffer类型,并调用reverse()方法
	实现倒序,调用toString()方法转化为String类型
**/
//传参:str="qw23eqr123e4tt"
public String ARFA3(String str) { 
  StringBuffer sb = new StringBuffer(str);
  String rs = sb.reverse().toString().replaceAll("(.)(?=.*\\1)", ""); 
  StringBuffer out = new StringBuffer(rs);  
  return out.reverse().toString();
 }
 //去重结果:qw23er14t

参考博客:java字符串去重

你可能感兴趣的:(JAVA字符串去重的几种方式)