簡體   English   中英

在Java中使用.equals()比較字符串

[英]Comparing Strings using .equals() in java

我有接受用戶輸入的這段代碼,使用.split()將其分解為一個數組,然后將唯一不是" "的值添加到列表中,通常在比較時我會說整數我會寫==!=但是我怎么寫不等於使用.equals() 我會寫(!array.equals(" ");嗎?

    Scanner in = new Scanner(System.in);
    String input = in.next();
    String[] array = input.split("");
    List<String> list = new ArrayList<String>();
    for (int a = 0; a < array.length; a++) {
        if (array[a].equals(" ")) {
            list.add(array[a]);
        }
    }

array[a].equals(" ")返回truefalse ,如果要反轉條件,則需要使用! (不)

例如

if (!array[a].equals(" ")) {

讀取為“如果數組中位於位置a的元素不等於“”

是的,您將使用! 不是用於反轉任何布爾表達式的運算符,但在這里您也應該使用trim()

if (!array[a].trim().equals("")) {

這可以確保如果輸入具有一個或多個空格,則不會將其添加到List 另一種方法是像這樣使用isEmpty()

if (!array[a].trim().isEmpty()) { // Java 6 and above

由於array.equals產生布爾值,所以! 修飾符將反轉結果。

將字符串與文字值進行比較時,請始終使用文字值來調用.equals()因為文字值是null安全的:

" ".equals(array[a]);

如果您使用的是Java8,則可以使用流來很好地,簡潔地完成您想要的事情:

List<String> notSpaces = Pattern.compile("").splitAsStream(input)
    .filter(s->!" ".equals(s))
    .collect(Collectors.toList());

您也可能真的很偷偷摸摸,兩次分裂,第一次是在空格字符上分裂:

Pattern splitAll = Pattern.compile("");
List<String> notSpaces = Pattern.compile(" +").splitAsStream(input)
    .flatMap(s->splitAll.splitAsStream(s))
    .collect(Collectors.toList());

第一個拆分將從結果字符串中刪除所有空格,第二個拆分將每個剩余的字符串拆分為其組成字符串。 不知道哪個實際上更有效。 如果有很多空間,第二個可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM