
Java中常用的String类就是由Char类型的数组实现的
字符串的基本操作和其它线性结构有很大差别。之前提到的数组、队列等更关注单个元素的操作,也就是常说的增、删、改、查。字符串更多的是对字串的操作,如字串的查找、截取、替换等
高级语言中一般都提供了操作字符串的工具,重点是掌握其用法。Java 提供了 String 类来创建和操作字符,我们主要掌握String和StringBuilder类的使用
1.String类
1)String类的常用方法
String str1 = "jack";String str2 = "mary";// 属性str1.isEmpty(); //是否为空str1.length(); //字符串长度// 查找str1.charAt(1); //查找字符str1.indexOf('a'); //查找字符首位置str1.lastIndexOf('a');//查找字符末位置// 修改与转换str1.replace('a','b');//a替换成bstr1.toCharArray(); //转成字符类型的数组// 合并与拆分str1.concat(str2); //连接两个字符串str1.substring(2,3); //截取字符串//包含与比较str1.contains(str2); //是否包含该子串str1.compareTo(str2); //比较字符是否相等
2.StringBuilder类
StringBuilder sb = new StringBuilder();// 属性sb.capacity(); //当前容量,底层数组的容量,默认16sb.length(); //字符个数// 方法sb.append("bigleg is a gentleman"); //追加字符sb.insert(10 , "not ");//插入字符sb.delete(10 , 14); //删除字符sb.toString(); //转成字符串
虽然String类提供了很多现成的方法,不过有些场景还是要自己实现。比如字符统计、字符串去重等
//ASCII码和字符互转int ascii = (byte)'a';char c = (char)97;//统计字符出现个数并打印public static void countChar(String str){int[] cnt = new int[256];for (int i = 0; i < str.length(); i++){cnt[str.charAt(i)]++; //字符转成ASCII码值, 作为索引传入}for (int i = 0; i < 256; i++) {if(cnt[i] != 0)System.out.println((char)i + " " +cnt[i]);}}//去除重复字符public String removeRepeatChar(String str){StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char charWord = str.charAt(i);int firstPosition = str.indexOf(charWord); //字符首次出现的位置if( firstPosition == i){sb.append(charWord);}}return sb.toString();}//保留重复字符public String collectRepeatChar(String str){StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char charWord = str.charAt(i);int firstPosition = str.indexOf(charWord);int lastPosition = str.lastIndexOf(charWord);if( firstPosition != i && lastPosition == i){sb.append(charWord);}}return sb.toString();}
文章转载自码农大腿哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




