如何在 Java 中检查字符串是否为空

本教程讨论了在 Java 中检查一个字符串是否为空的方法。

在 Java 中使用 str == null 检查一个字符串是否为 null

在 Java 中检查一个给定的字符串是否为 null 的最简单方法是使用 str == null 将其与 null 进行比较。下面的例子说明了这一点。

public class MyClass {
    public static void main(String args[]) {
        String str1 = null;
        String str2 = "Some text";
        if (str1 == null)
            System.out.println("str1 is a null string");
        else
            System.out.println("str1 is not a null string");
        if (str2 == null)
            System.out.println("str2 is a null string");
        else
            System.out.println("str2 is not a null string");
    }
}

输出:

str1 is a null string
str2 is not a null string

在 Java 中使用 str.isEmpty() 检查一个字符串是否为空

在 Java 中检查一个给定的字符串是否为空的最简单方法是使用 String 类的内置方法- isEmpty()。下面的例子说明了这一点。

public class MyClass {
    public static void main(String args[]) {
        String str1 = "";
        String str2 = "Some text";
        if (str1.isEmpty())
            System.out.println("str1 is an empty string");
        else
            System.out.println("str1 is not an empty string");
        if (str2.isEmpty())
            System.out.println("str2 is an empty string");
        else
            System.out.println("str2 is not an empty string");
    }
}

输出:

str1 is an empty string
str2 is not an empty string

如果我们有兴趣同时检查这两个条件,我们可以通过使用逻辑或运算符-||来实现。下面的例子说明了这一点。

public class MyClass {
    public static void main(String args[]) {
        String str1 = "";
        if (str1.isEmpty() || str1 == null)
            System.out.println("This is an empty or null string");
        else
            System.out.println("This is neither empty nor null string");
    }
}

输出:

This is an empty or null string

如何在 Java 中检查字符串是否为整数

Java 中的 String 和 Integer 经常用于存储数据,但有时我们可能要检查一种数据类型是否包含与另一种数据类型兼容的元素。

我们知道一个字符串可以包含字母、符号和数字,因此确定我们的字符串所包含的数据类型是很有用的。我们将看到用不同方法检查字符串的例子。

通过 Java 中的 Character.digit() 检查字符串是否为整数

我们可以看到,下面的例子中有三个字符串,我们可以把它们传入函数 isStringInteger(stringToCheck, radix) 中。radix 告诉我们想要得到的数字的范围,这里我们使用的是 10,允许的范围是 0 到 9。

Character.digit() 检查字符串中的每个字符,如果是数字,则返回一个大于 0 的数字。还可以添加其他条件语句以使结果准确。

public class Main {
    public static void main(String[] args) {
        String str1 = "ABC123";
        String str2 = "3030";
        String str3 = "-9";
        boolean integerOrNot1 = isStringInteger(str1, 10);
        System.out.println("Is "+str1+" an Integer? -> "+integerOrNot1);
        boolean integerOrNot2 = isStringInteger(str2, 10);
        System.out.println("Is "+str2+" an Integer? -> "+integerOrNot2);
        boolean integerOrNot3 = isStringInteger(str3, 10);
        System.out.println("Is "+str3+" an Integer? -> "+integerOrNot3);
    }
    public static boolean isStringInteger(String stringToCheck, int radix) {
        if(stringToCheck.isEmpty()) return false;           //Check if the string is empty
        for(int i = 0; i < stringToCheck.length(); i++) {
            if(i == 0 && stringToCheck.charAt(i) == '-') {     //Check for negative Integers
                if(stringToCheck.length() == 1) return false;
                else continue;
            }
            if(Character.digit(stringToCheck.charAt(i),radix) < 0) return false;
        }
        return true;
    }
}

输出:

Is 12000003 an Integer? -> true

通过 Java 中的 string.matches(pattern) 检查字符串是否为整数

在下一个识别字符串是否包含整数元素的方法中,我们可以使用正则表达式,它可以帮助匹配一个特定的模式,即数值。-?\\d+ 就是我们可以对字符串进行匹配的表达式,并得到布尔类型的结果。

public class Main {
    public static void main(String[] args) {
        String str1 = "ABC123";
        String str2 = "123";
        String str3 = "000000009";
        boolean integerOrNot1 = str1.matches("-?\\d+");
        System.out.println("Is "+str1+" an Integer? -> "+integerOrNot1);
        boolean integerOrNot2 = str2.matches("-?\\d+");
        System.out.println("Is "+str2+" an Integer? -> "+integerOrNot2);
        boolean integerOrNot3 = str3.matches("-?\\d+");;
        System.out.println("Is "+str3+" an Integer? -> "+integerOrNot3);
    }
}

输出:

Is ABC123 an Integer? -> false
Is 123 an Integer? -> true
Is 000000009 an Integer? -> true

通过 Java 中的 Scanner.nextInt(radix) 检查字符串是否为整数

我们还可以使用 Java 中著名的 Scanner() 类。它的 nextInt() 方法可以检查给定的字符串是否为 Int 类型。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        String str1 = "ABC123";
        String str2 = "3030";
        String str3 = "000000009";
        System.out.println("Is "+str1+" an Integer? -> "+isStringInteger(str1, 10));
        System.out.println("Is "+str2+" an Integer? -> "+isStringInteger(str2, 10));
        System.out.println("Is "+str3+" an Integer? -> "+isStringInteger(str3, 10));
    }
    public static boolean isStringInteger(String stringToCheck, int radix) {
        Scanner sc = new Scanner(stringToCheck.trim());
        if(!sc.hasNextInt(radix)) return false;
        sc.nextInt(radix);
        return !sc.hasNext();
    }

输出:

Is ABC123 an Integer? -> false
Is 3030 an Integer? -> true
Is 000000009 an Integer? -> true

如何在 Java 中检查字符串是否包含特定字符

本教程文章将介绍如何在 Java 中检查一个字符串是否包含特定的字符。在 Java 中,我们以不同的方式使用 contains() 方法来检查字符串中是否存在字符。让我们通过各种例子来讨论这个方法的实现。

使用字符串 contains() 方法检查字符串是否包含特定字符

Java Stringcontains() 方法检查字符串中存在的特定字符序列。如果字符串中存在指定的字符序列,该方法返回 true,否则返回 false。让我们用下面的例子进行说明。

import java.util.*;
import java.lang.*;
import java.io.*;
public class Example1 {
    public static void main(String[] args) {
        String str = "Character";
        System.out.println(str.contains("h"));
        System.out.println(str.contains("Char"));
        System.out.println(str.contains("ac"));
        System.out.println(str.contains("v"));
        System.out.println(str.contains("vl"));
    }
}

输出:

true
true
true
false
false

请注意,contains() 方法是区分大小写的。如果我们尝试在给定的字符串中寻找 CHA,那么结果将是 false,就像下面这样。

import java.util.*;
import java.lang.*;
import java.io.*;
public class Example {
    public static void main(String[] args) {
        String str = "Character";
        System.out.println(str.contains("H"));
        System.out.println(str.contains("CHAR"));
        System.out.println(str.contains("aCt"));
    }
}

输出:

false
false
false

使用字符串 indexOf() 方法来检查字符串是否包含特定字符

在这个例子中,我们将学习使用 indexOf() 方法在一个字符串中查找字符。indexOf() 方法与 contains() 方法不同,因为它不返回任何布尔值。取而代之的是,indexOf() 方法返回一个 int 值,它实际上是字符串中 substring 的索引。让我们来理解下面的例子。

import java.util.*;
import java.lang.*;
import java.io.*;
public class Example2 {
    public static void main(String[] args) {
        String str = "Hello World!";
        if(str.indexOf("World") != -1)
        {
            System.out.println("The String "+str+" contains World");
        }
        else
        {
            System.out.println("The String "+str+"does not contain World");
        }
    }
}

输出:

The string Hello World! contains World

使用字符串 contains() 方法与 if-else 语句一起使用

根据字符是否存在,我们现在知道 Java 字符串 contains() 方法返回一个布尔值。为此,我们可以在 if-else 条件语句中使用该方法。让我们在下面的例子中进行讨论。

import java.util.*;
import java.lang.*;
import java.io.*;
public class Example3 {
    public static void main(String[] args) {
        String str = "Hello World!";
        if(str.contains("World"))
        {
            System.out.println("It is true");
        }
        else
        {
            System.out.println("It is false");
        }
    }
}

输出:

It is true

搜索字符串中存在特定字符的 Java 程序

最后这个例子将通过一个通用的 Java 程序来搜索字符串中是否存在某些字符。在这种情况下,我们将在整个字符串长度上执行循环,以找到匹配的字符集。让我们看看下面的例子。

import java.util.*;
import java.lang.*;
import java.io.*;
public class Example4 {
    public static void main(String[] args) {
        String str = "yellow";
        char[] charSearch = {'y','e','w'};
        for(int i=0; i<str.length(); i++)
        {
            char chr = str.charAt(i);
            for(int j=0; j<charSearch.length; j++)
            {
                if(charSearch[j] == chr)
                {
                    System.out.println("Char Value "+charSearch[j]+" is present in "+str);
                }
            }
        }
    }
}

输出:

Char Value y is present in yellow
Char Value e is present in yellow
Char Value w is present in yellow