在 Java 中通过索引获取字符串中的字符
本教程介绍了如何在 Java 中通过索引获取 String
字符,并列出了一些示例代码来理解该主题。
字符串用于存储字符序列。就像数组一样,字符串也遵循从零开始的索引。这意味着字符串的第一个字符被分配了一个索引值为零。我们可以使用它们的索引从字符串中获取单个字符。在本教程中,我们将学习如何做到这一点。
Java 中使用 charAt()
方法获取字符串字符
charAt()
方法将索引值作为参数并返回字符串中该索引处的字符。它是从字符串中获取字符的最简单方法,是一个 String
类方法。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char characterAtIdx1 = s.charAt(1);//character e
char characterAtIdx4 = s.charAt(4);//whitespace
char characterAtIdx5 = s.charAt(5);//character s
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + characterAtIdx1);
System.out.println("Character at Index 4: " + characterAtIdx4);
System.out.println("Character at Index 5: " + characterAtIdx5);
}
}
输出:
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
正如我们在上面的代码中看到的,这个方法的返回类型是 char。我们可以使用 Character
类的 toString()
方法将此字符类型转换为字符串,甚至可以使用 length()
方法获取此字符串的长度。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char characterAtIdx6 = s.charAt(6);//character t
String stringAtIdx6 = Character.toString(characterAtIdx6);//char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
输出:
Length: 1
String: t
使用 String.valueOf()
方法将字符转换为字符串
从字符串中获取字符后,如果需要,我们可以使用 String.valueOf()
方法将字符转换为字符。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char characterAtIdx6 = s.charAt(6);//character t
String stringAtIdx6 = String.valueOf(characterAtIdx6);//char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
输出:
Length: 1
String: t
我们还可以将一个空字符串连接到字符上以将其转换为字符串。中间没有任何内容的引号表示空字符串。这是在 Java 中获取 String
对象的最简单和隐式的方法之一。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char characterAtIdx6 = s.charAt(6);//character t
String stringAtIdx6 = "" + characterAtIdx6;//char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
输出:
Length: 1
String: t
Java 中从字符串获取字符数组
我们可以借助方括号通过索引获取数组元素。如果我们将字符串转换为字符类型数组,我们可以从中获取任何字符。
Java 提供了一个方便的 toCharArray()
方法,它返回一个字符数组。我们可以在字符串上使用这个方法并为它获取一个字符数组。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char[] charArr = s.toCharArray();
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + charArr[1]);
System.out.println("Character at Index 4: " + charArr[4]);
System.out.println("Character at Index 5: " + charArr[5]);
}
}
输出:
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
我们可以使用上一节中描述的方法将字符转换为字符串。
public class Demo
{
public static void main(String[] args)
{
String s = "test string";
char[] charArr = s.toCharArray();
char characterAtIdx6 = charArr[6];//character t
String str1 = Character.toString(characterAtIdx6);//char to string
String str2 = String.valueOf(characterAtIdx6);//char to string
String str3 = "" + characterAtIdx6;//char to string
System.out.println("Using toString()");
System.out.println("Length: " + str1.length() + " String: " + str1);
System.out.println("\nUsing valueOf()");
System.out.println("Length: " + str2.length() + " String: " + str2);
System.out.println("\nUsing empty string concatenation");
System.out.println("Length: " + str3.length() + " String: " + str3);
}
}
输出:
Using toString()
Length: 1 String: t
Using valueOf()
Length: 1 String: t
Using empty string concatenation
Length: 1 String: t
获取 Unicode 补充多语言平面 (SMP) 的字符
在极少数情况下,我们的字符串可能包含基本 Unicode 多语言平面中不存在的字符。一个例子可能是一串表情符号或表情符号。这些字符是 Unicode 补充多语言平面 (SMP) 的一部分。
上述方法不适用于这些字符。我们可以使用 codePointAt()
方法从字符串中获取此类字符。此方法返回一个整数,表示该索引处字符的 Unicode 值。确保你安装了适当的字体来查看这些字符。
public class Demo
{
public static void main(String[] args)
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length();)
{
int codePoint = s.codePointAt(i);
char[] charArr = Character.toChars(codePoint);//More than one characters may be required to represent an SMP char
System.out.print(new String(charArr) + " ");
i = i + Character.charCount(codePoint);//Increase i according to the number of chars required for that SMP char
}
}
}
输出:
😀 t h e g r i n n i n g e m o j i
如果我们尝试使用 charAt()
方法打印相同的字符串,我们会得到以下输出。
public class Demo
{
public static void main(String args[])
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
System.out.print(c + " ");
}
}
}
输出:
? ? t h e g r i n n i n g e m o j i
总结
字符串,就像数组一样,遵循从零开始的索引。我们可以使用 charAt()
方法从字符串中获取单个字符。我们还可以将字符串转换为字符数组,然后使用它们的索引获取单个字符。如果你希望单个字符作为字符串而不是字符,则使用 Character.toString()
或 String.valueOf()
方法来转换它。有时我们的字符串可能包含基本多语言平面之外的字符。在这种情况下,我们可以使用 codePointAt()
方法而不是 charAt()
方法。
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
在 MySQL 中获取命令历史记录
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 MySQL 中转换为十进制
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。
在 MySQL 中获取当前日期和时间
发布时间:2023/05/09 浏览次数:145 分类:MySQL
-
本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。
仅在 MySQL 中按日期对日期时间列进行分组
发布时间:2023/05/09 浏览次数:75 分类:MySQL
-
本篇文章使用 GROUP BY 子句、COUNT() 和 DATE() 函数仅在 MySQL 中按 DATE 对 DATETIME 类型列进行分组。