溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中String字符串刪除空格的方式有哪些

發布時間:2022-08-13 10:09:33 來源:億速云 閱讀:201 作者:iii 欄目:開發技術

Java中String字符串刪除空格的方式有哪些

在Java編程中,處理字符串是非常常見的操作。字符串中的空格可能會影響程序的邏輯和輸出結果,因此刪除字符串中的空格是一個常見的需求。本文將詳細介紹在Java中刪除字符串空格的多種方式,包括使用內置方法、正則表達式、第三方庫等。我們將通過代碼示例和詳細解釋來幫助讀者理解和掌握這些方法。

1. 使用trim()方法刪除字符串兩端的空格

trim()是Java中最常用的刪除字符串兩端空格的方法。它會刪除字符串開頭和結尾的所有空白字符(包括空格、制表符、換行符等),但不會影響字符串中間的空格。

示例代碼

public class TrimExample {
    public static void main(String[] args) {
        String str = "  Hello, World!  ";
        String trimmedStr = str.trim();
        System.out.println("Original: '" + str + "'");
        System.out.println("Trimmed: '" + trimmedStr + "'");
    }
}

輸出結果

Original: '  Hello, World!  '
Trimmed: 'Hello, World!'

解釋

  • trim()方法會刪除字符串開頭和結尾的所有空白字符。
  • 如果字符串中間有空格,trim()方法不會刪除它們。

2. 使用replaceAll()方法刪除所有空格

replaceAll()方法可以使用正則表達式來替換字符串中的特定字符。通過使用正則表達式\\s,我們可以匹配所有的空白字符(包括空格、制表符、換行符等),并將其替換為空字符串。

示例代碼

public class ReplaceAllExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String noSpaceStr = str.replaceAll("\\s", "");
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • replaceAll("\\s", "")會刪除字符串中的所有空白字符。
  • 這個方法不僅會刪除空格,還會刪除制表符、換行符等其他空白字符。

3. 使用replace()方法刪除特定空格

replace()方法可以用來替換字符串中的特定字符或字符串。如果我們只想刪除普通的空格字符(ASCII碼為32),可以使用replace(" ", "")。

示例代碼

public class ReplaceExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String noSpaceStr = str.replace(" ", "");
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • replace(" ", "")只會刪除普通的空格字符,不會刪除制表符、換行符等其他空白字符。
  • 這個方法適用于只需要刪除普通空格的場景。

4. 使用StringUtils類刪除空格(Apache Commons Lang庫)

Apache Commons Lang庫提供了一個非常實用的StringUtils類,其中包含了許多處理字符串的靜態方法。StringUtils.deleteWhitespace()方法可以刪除字符串中的所有空白字符。

添加依賴

首先,需要在項目中添加Apache Commons Lang庫的依賴。如果使用Maven,可以在pom.xml中添加以下依賴:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

示例代碼

import org.apache.commons.lang3.StringUtils;

public class StringUtilsExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String noSpaceStr = StringUtils.deleteWhitespace(str);
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • StringUtils.deleteWhitespace()方法會刪除字符串中的所有空白字符,包括空格、制表符、換行符等。
  • 這個方法非常方便,尤其是在處理復雜的字符串時。

5. 使用strip()方法刪除Unicode空白字符(Java 11及以上版本)

從Java 11開始,String類新增了strip()、stripLeading()stripTrailing()方法,用于刪除字符串中的Unicode空白字符。與trim()方法不同,strip()方法可以處理Unicode空白字符,而不僅僅是ASCII空白字符。

示例代碼

public class StripExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String strippedStr = str.strip();
        System.out.println("Original: '" + str + "'");
        System.out.println("Stripped: '" + strippedStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
Stripped: 'Hello,   World!'

解釋

  • strip()方法會刪除字符串開頭和結尾的所有Unicode空白字符。
  • stripLeading()stripTrailing()方法分別用于刪除字符串開頭和結尾的空白字符。

6. 使用StringTokenizer類刪除空格

StringTokenizer類可以將字符串分割成多個令牌(tokens),并且可以指定分隔符。通過將空格作為分隔符,我們可以將字符串分割成多個部分,然后再將這些部分拼接起來,從而實現刪除空格的效果。

示例代碼

import java.util.StringTokenizer;

public class StringTokenizerExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        StringTokenizer tokenizer = new StringTokenizer(str, " ");
        StringBuilder noSpaceStr = new StringBuilder();
        while (tokenizer.hasMoreTokens()) {
            noSpaceStr.append(tokenizer.nextToken());
        }
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • StringTokenizer類將字符串按照空格分割成多個令牌。
  • 通過遍歷這些令牌并將它們拼接起來,可以實現刪除空格的效果。

7. 使用split()join()方法刪除空格

split()方法可以將字符串按照指定的正則表達式分割成數組,而join()方法可以將數組中的元素拼接成一個字符串。通過將字符串按照空格分割成數組,然后再將數組中的元素拼接起來,可以實現刪除空格的效果。

示例代碼

public class SplitJoinExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String[] parts = str.split("\\s+");
        String noSpaceStr = String.join("", parts);
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • split("\\s+")將字符串按照一個或多個空白字符分割成數組。
  • String.join("", parts)將數組中的元素拼接成一個字符串,中間沒有分隔符。

8. 使用PatternMatcher類刪除空格

PatternMatcher類是Java中用于處理正則表達式的工具。通過使用正則表達式\\s,我們可以匹配所有的空白字符,并將其替換為空字符串。

示例代碼

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PatternMatcherExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        Pattern pattern = Pattern.compile("\\s");
        Matcher matcher = pattern.matcher(str);
        String noSpaceStr = matcher.replaceAll("");
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • Pattern.compile("\\s")編譯了一個匹配所有空白字符的正則表達式。
  • matcher.replaceAll("")將所有匹配的空白字符替換為空字符串。

9. 使用Stream API刪除空格(Java 8及以上版本)

Java 8引入了Stream API,可以方便地對集合和數組進行操作。通過將字符串轉換為字符流,過濾掉空白字符,然后再將字符流拼接成字符串,可以實現刪除空格的效果。

示例代碼

import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String noSpaceStr = str.chars()
                .filter(c -> !Character.isWhitespace(c))
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • str.chars()將字符串轉換為一個IntStream,其中每個元素是字符的ASCII碼。
  • filter(c -> !Character.isWhitespace(c))過濾掉所有的空白字符。
  • mapToObj(c -> String.valueOf((char) c))將ASCII碼轉換為字符。
  • collect(Collectors.joining())將字符流拼接成一個字符串。

10. 使用Guava庫刪除空格

Guava是Google提供的一個Java庫,其中包含了許多實用的工具類和方法。CharMatcher類可以用于匹配和操作字符,包括刪除空白字符。

添加依賴

首先,需要在項目中添加Guava庫的依賴。如果使用Maven,可以在pom.xml中添加以下依賴:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

示例代碼

import com.google.common.base.CharMatcher;

public class GuavaExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        String noSpaceStr = CharMatcher.whitespace().removeFrom(str);
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • CharMatcher.whitespace().removeFrom(str)會刪除字符串中的所有空白字符。
  • Guava庫提供了許多強大的工具類和方法,可以簡化字符串處理操作。

11. 使用StringBuilder手動刪除空格

如果不想使用任何內置方法或第三方庫,可以手動遍歷字符串的每個字符,并使用StringBuilder來構建一個新的字符串,跳過空白字符。

示例代碼

public class StringBuilderExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        StringBuilder noSpaceStr = new StringBuilder();
        for (char c : str.toCharArray()) {
            if (!Character.isWhitespace(c)) {
                noSpaceStr.append(c);
            }
        }
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • 通過遍歷字符串的每個字符,并使用StringBuilder來構建一個新的字符串,跳過空白字符。
  • 這種方法雖然比較原始,但在某些情況下可能更加靈活。

12. 使用StringBuffer手動刪除空格

StringBufferStringBuilder類似,都是可變的字符序列。StringBuffer是線程安全的,而StringBuilder不是。如果需要在多線程環境中操作字符串,可以使用StringBuffer。

示例代碼

public class StringBufferExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        StringBuffer noSpaceStr = new StringBuffer();
        for (char c : str.toCharArray()) {
            if (!Character.isWhitespace(c)) {
                noSpaceStr.append(c);
            }
        }
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • StringBufferStringBuilder的使用方法類似,但StringBuffer是線程安全的。
  • 在多線程環境中操作字符串時,建議使用StringBuffer。

13. 使用Character類判斷和刪除空格

Character類提供了許多靜態方法來判斷字符的類型。通過使用Character.isWhitespace()方法,我們可以判斷一個字符是否是空白字符,并決定是否將其添加到新的字符串中。

示例代碼

public class CharacterExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        StringBuilder noSpaceStr = new StringBuilder();
        for (char c : str.toCharArray()) {
            if (!Character.isWhitespace(c)) {
                noSpaceStr.append(c);
            }
        }
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • Character.isWhitespace(c)方法可以判斷一個字符是否是空白字符。
  • 通過遍歷字符串的每個字符,并使用StringBuilder來構建一個新的字符串,跳過空白字符。

14. 使用ArraysStringJoiner刪除空格

Arrays類提供了許多操作數組的靜態方法,而StringJoiner類可以用于拼接字符串。通過將字符串轉換為字符數組,過濾掉空白字符,然后再使用StringJoiner拼接成字符串,可以實現刪除空格的效果。

示例代碼

import java.util.Arrays;
import java.util.StringJoiner;

public class ArraysStringJoinerExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        StringJoiner noSpaceStr = new StringJoiner("");
        Arrays.stream(str.split("\\s+")).forEach(noSpaceStr::add);
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • Arrays.stream(str.split("\\s+"))將字符串按照一個或多個空白字符分割成數組,并將其轉換為流。
  • StringJoiner類用于拼接字符串,中間沒有分隔符。

15. 使用StringReaderStringWriter刪除空格

StringReaderStringWriter是Java I/O庫中的類,可以用于讀取和寫入字符串。通過使用StringReader讀取字符串的每個字符,并使用StringWriter寫入非空白字符,可以實現刪除空格的效果。

示例代碼

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

public class StringReaderWriterExample {
    public static void main(String[] args) throws IOException {
        String str = "  Hello,   World!  ";
        StringReader reader = new StringReader(str);
        StringWriter writer = new StringWriter();
        int c;
        while ((c = reader.read()) != -1) {
            if (!Character.isWhitespace(c)) {
                writer.write(c);
            }
        }
        String noSpaceStr = writer.toString();
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • StringReader類用于讀取字符串的每個字符。
  • StringWriter類用于寫入非空白字符。
  • 通過遍歷字符串的每個字符,并使用StringWriter寫入非空白字符,可以實現刪除空格的效果。

16. 使用Scanner類刪除空格

Scanner類可以用于解析字符串。通過使用Scanner類讀取字符串的每個字符,并跳過空白字符,可以實現刪除空格的效果。

示例代碼

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        String str = "  Hello,   World!  ";
        Scanner scanner = new Scanner(str);
        StringBuilder noSpaceStr = new StringBuilder();
        while (scanner.hasNext()) {
            noSpaceStr.append(scanner.next());
        }
        System.out.println("Original: '" + str + "'");
        System.out.println("No Space: '" + noSpaceStr.toString() + "'");
    }
}

輸出結果

Original: '  Hello,   World!  '
No Space: 'Hello,World!'

解釋

  • Scanner類可以用于解析字符串,并跳過空白字符。
  • 通過使用Scanner類讀取字符串的每個字符,并跳過空白字符,可以實現刪除空格的效果。

17. 使用BufferedReaderBufferedWriter刪除空格

BufferedReaderBufferedWriter是Java I/O庫中的類,可以用于高效地讀取和寫入字符。通過使用BufferedReader讀取字符串的每個字符,并使用BufferedWriter寫入非空白字符,可以實現刪除空格

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女