JAVA之String中删除指定字符方式的方法有哪些

发布时间:2023-02-27 10:53:46 作者:iii
来源:亿速云 阅读:92

JAVA之String中删除指定字符方式的方法有哪些

在Java编程中,String类是不可变的,这意味着一旦创建了一个String对象,它的内容就不能被改变。然而,在实际开发中,我们经常需要对字符串进行各种操作,包括删除指定的字符。本文将详细介绍在Java中删除字符串中指定字符的多种方法,并分析它们的优缺点。

1. 使用replace()方法

String类提供了replace()方法,可以用来替换字符串中的字符或子字符串。如果我们想要删除某个字符,可以将该字符替换为空字符串。

1.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.replace(String.valueOf(charToRemove), "");
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

1.2 删除多个字符

如果我们想要删除多个不同的字符,可以多次调用replace()方法。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = str.replace(String.valueOf(c), "");
        }
        System.out.println(str);  // 输出: He, Wrd!
    }
}

1.3 优缺点分析

2. 使用replaceAll()方法

replaceAll()方法可以使用正则表达式来替换字符串中的字符或子字符串。与replace()方法类似,我们可以通过将指定字符替换为空字符串来实现删除操作。

2.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charToRemove = "o";
        String result = str.replaceAll(charToRemove, "");
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

2.2 删除多个字符

我们可以使用正则表达式中的字符类来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charsToRemove = "[ol]";
        String result = str.replaceAll(charsToRemove, "");
        System.out.println(result);  // 输出: He, Wrd!
    }
}

2.3 优缺点分析

3. 使用StringBuilderStringBuffer

StringBuilderStringBuffer是可变的字符串类,它们提供了deleteCharAt()方法,可以删除指定位置的字符。我们可以通过遍历字符串来删除指定的字符。

3.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        StringBuilder sb = new StringBuilder(str);
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == charToRemove) {
                sb.deleteCharAt(i);
                i--;  // 由于删除了一个字符,索引需要回退
            }
        }
        String result = sb.toString();
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

3.2 删除多个字符

我们可以通过遍历字符数组来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        StringBuilder sb = new StringBuilder(str);
        for (int i = 0; i < sb.length(); i++) {
            for (char c : charsToRemove) {
                if (sb.charAt(i) == c) {
                    sb.deleteCharAt(i);
                    i--;  // 由于删除了一个字符,索引需要回退
                    break;
                }
            }
        }
        String result = sb.toString();
        System.out.println(result);  // 输出: He, Wrd!
    }
}

3.3 优缺点分析

4. 使用Stream API

Java 8引入了Stream API,我们可以利用它来处理字符串中的字符。

4.1 删除单个字符

import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.chars()
                .filter(c -> c != charToRemove)
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

4.2 删除多个字符

我们可以使用Set来存储需要删除的字符,然后在filter()中进行判断。

import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        Set<Character> charsToRemove = Set.of('o', 'l');
        String result = str.chars()
                .filter(c -> !charsToRemove.contains((char) c))
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());
        System.out.println(result);  // 输出: He, Wrd!
    }
}

4.3 优缺点分析

5. 使用Apache Commons Lang

Apache Commons Lang库提供了StringUtils类,其中包含了许多实用的字符串操作方法,包括删除指定字符。

5.1 删除单个字符

import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = StringUtils.remove(str, charToRemove);
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

5.2 删除多个字符

我们可以使用StringUtils.remove()方法多次调用来删除多个字符。

import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = StringUtils.remove(str, c);
        }
        System.out.println(str);  // 输出: He, Wrd!
    }
}

5.3 优缺点分析

6. 使用正则表达式和Pattern

我们可以使用Pattern类和Matcher类来删除字符串中的指定字符。

6.1 删除单个字符

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charToRemove = "o";
        String result = Pattern.compile(charToRemove).matcher(str).replaceAll("");
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

6.2 删除多个字符

我们可以使用正则表达式中的字符类来删除多个字符。

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charsToRemove = "[ol]";
        String result = Pattern.compile(charsToRemove).matcher(str).replaceAll("");
        System.out.println(result);  // 输出: He, Wrd!
    }
}

6.3 优缺点分析

7. 使用StringTokenizer

StringTokenizer类可以将字符串分割成多个子字符串,我们可以利用它来删除指定的字符。

7.1 删除单个字符

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        StringTokenizer tokenizer = new StringTokenizer(str, String.valueOf(charToRemove));
        StringBuilder result = new StringBuilder();
        while (tokenizer.hasMoreTokens()) {
            result.append(tokenizer.nextToken());
        }
        System.out.println(result.toString());  // 输出: Hell, Wrld!
    }
}

7.2 删除多个字符

我们可以使用StringTokenizer类来删除多个字符。

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charsToRemove = "ol";
        StringTokenizer tokenizer = new StringTokenizer(str, charsToRemove);
        StringBuilder result = new StringBuilder();
        while (tokenizer.hasMoreTokens()) {
            result.append(tokenizer.nextToken());
        }
        System.out.println(result.toString());  // 输出: He, Wrd!
    }
}

7.3 优缺点分析

8. 使用Guava

Guava库是Google提供的一个Java库,其中包含了许多实用的工具类,包括字符串操作。

8.1 删除单个字符

import com.google.common.base.CharMatcher;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = CharMatcher.is(charToRemove).removeFrom(str);
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

8.2 删除多个字符

我们可以使用CharMatcher.anyOf()方法来删除多个字符。

import com.google.common.base.CharMatcher;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String charsToRemove = "ol";
        String result = CharMatcher.anyOf(charsToRemove).removeFrom(str);
        System.out.println(result);  // 输出: He, Wrd!
    }
}

8.3 优缺点分析

9. 使用Java 9String.chars()方法

Java 9引入了String.chars()方法,我们可以利用它来处理字符串中的字符。

9.1 删除单个字符

import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.chars()
                .filter(c -> c != charToRemove)
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

9.2 删除多个字符

我们可以使用Set来存储需要删除的字符,然后在filter()中进行判断。

import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        Set<Character> charsToRemove = Set.of('o', 'l');
        String result = str.chars()
                .filter(c -> !charsToRemove.contains((char) c))
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());
        System.out.println(result);  // 输出: He, Wrd!
    }
}

9.3 优缺点分析

10. 使用Java 11String.repeat()方法

Java 11引入了String.repeat()方法,我们可以利用它来处理字符串中的字符。

10.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.replace(String.valueOf(charToRemove), "").repeat(1);
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

10.2 删除多个字符

我们可以使用replace()方法多次调用来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = str.replace(String.valueOf(c), "");
        }
        String result = str.repeat(1);
        System.out.println(result);  // 输出: He, Wrd!
    }
}

10.3 优缺点分析

11. 使用Java 12String.indent()方法

Java 12引入了String.indent()方法,我们可以利用它来处理字符串中的字符。

11.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.replace(String.valueOf(charToRemove), "").indent(0);
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

11.2 删除多个字符

我们可以使用replace()方法多次调用来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = str.replace(String.valueOf(c), "");
        }
        String result = str.indent(0);
        System.out.println(result);  // 输出: He, Wrd!
    }
}

11.3 优缺点分析

12. 使用Java 13String.stripIndent()方法

Java 13引入了String.stripIndent()方法,我们可以利用它来处理字符串中的字符。

12.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.replace(String.valueOf(charToRemove), "").stripIndent();
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

12.2 删除多个字符

我们可以使用replace()方法多次调用来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = str.replace(String.valueOf(c), "");
        }
        String result = str.stripIndent();
        System.out.println(result);  // 输出: He, Wrld!
    }
}

12.3 优缺点分析

13. 使用Java 14String.stripLeading()String.stripTrailing()方法

Java 14引入了String.stripLeading()String.stripTrailing()方法,我们可以利用它们来处理字符串中的字符。

13.1 删除单个字符

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char charToRemove = 'o';
        String result = str.replace(String.valueOf(charToRemove), "").stripLeading().stripTrailing();
        System.out.println(result);  // 输出: Hell, Wrld!
    }
}

13.2 删除多个字符

我们可以使用replace()方法多次调用来删除多个字符。

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        char[] charsToRemove = {'o', 'l'};
        for (char c : charsToRemove) {
            str = str.replace(String.valueOf(c), "");
        }
        String result = str.stripLeading().stripTrailing();
        System.out.println(result);  // 输出: He, Wrd!
    }
}

13.3 优缺点分析

14. 使用Java 15String.formatted()方法

Java 15引入了String.formatted()方法,我们可以利用它来处理字符串中的字符。

14.1 删除单个字符

”`java public class Main { public static void main(String[] args) { String str = “Hello, World!”; char charToRemove = ‘o’; String

推荐阅读:
  1. java短信接口怎么用
  2. Centos 安装 java及PyCharm2.7

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java string

上一篇:pandas中按行或列的值对数据排序如何实现

下一篇:怎么使用C#代码实现经典扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》