目录
1、利用toCharArray()将该字符串变量转换为一个字符型数组 2、从该字符数组尾部开始遍历该数组,遇到第一个不是空格的字符停止遍历,并记录当前位置 3、从该数组的头部开始遍历,遇到第一个不为空格的字符,将此字符添加到一个新的字符串变量中,一直到i结束
- package com.light.exer;
-
- /**
- * @auther light
- * @Description String 模拟一个trim方法,去除字符串两端的空格。
- * 思路:
- * 1、利用toCharArray()将该字符串变量转换为一个字符型数组
- * 2、从该字符数组尾部开始遍历该数组,遇到第一个不是空格的字符停止遍历,并记录当前位置
- * 3、从该数组的头部开始遍历,遇到第一个不为空格的字符,将此字符添加到一个新的字符串变量中,一直到i结束
- * 4、返回该字符串变量
- * @create 2022-11-24 20:21
- */
- public class StringAlgorithmsTest01 {
- public static void main(String[] args) {
-
- String str1=" ***abf def*** ";
- System.out.println("原字符串为:\n"+str1);
-
- String str2 = str1.trim();
- System.out.println("********利用trim()去掉首尾空格********");
- System.out.println(str2);
- System.out.println("********利用自定义算法myTrim()去掉首尾空格********");
- String str3=myTrim(str1);
- System.out.println(str3);
-
- }
-
- public static String myTrim(String str){
- if(str==null){
- return "";
- }
- char[] s=str.toCharArray();
- int i=0,isFlag=0,j=0;
- String s1="";//用来接收字符值
-
- for(i=s.length-1;s[i]==' ';){
- i--;
- }
- while(j<=i){
- if(s[j]!=' '&&isFlag==0){//isFlag作用:标志,当遇到第一个不是空格字符时isFlag变
- //为1;防止将字符串中不是首尾的的空格去掉
- isFlag=1;
- }
- if(isFlag==1){
- s1+=s[j];
- }
- j++;
- }
-
- return s1;
- }
-
- }

- public class StringExer {
-
-
- public String myTrim(String str) {
- if (str != null) {
- int start = 0;// 用于记录从前往后首次索引位置不是空格的位置的索引
- int end = str.length() - 1;// 用于记录从后往前首次索引位置不是空格的位置的索引
-
- while (start < end && str.charAt(start) == ' ') {
- start++;
- }
-
- while (start < end && str.charAt(end) == ' ') {
- end--;
- }
- if (str.charAt(start) == ' ') {
- return "";
- }
-
- return str.substring(start, end + 1);
- }
- return null;
- }
- @Test //利用单元测试
- public void myTrimTest(){
- String s=" ***abc*** ";
- String s1 = myTrim(s);
- System.out.println(s1);
- }
- }
