在本教程中,我们将磋商如何在 Java 中将 String 工具转换为 char。
问题先容我们知道一个 char 只能包含一个字符。 但是,一个 String 工具可以包含多个字符。
因此,我们的教程将涵盖两种情形:

源字符串是一个单字符串。
源字符串是一个多字符串。
对付案例 1,我们可以轻松地将单个字符作为 char 获取。 例如,假设这是我们的输入:
String STRING_a = "a";
转换后,我们期望有一个字符“a”。
对付情形 2,如果源 String 是一个多字符的字符串,并且我们仍旧希望得到一个单个字符作为结果,我们必须剖析选择所需字符的需求,例如第一个、末了一个或 n- 第一个字符。
在本教程中,我们将先容一个更通用的办理方案。 我们将源字符串转换为一个 char 数组,该数组包含字符串中的每个字符。 这样,我们可以根据须要选择任何元素。
我们将利用 STRING_Rejoice 作为输入示例:
String STRING_Rejoice = "Rejoice";
那么接下来,让我们看看实际的案例效果。
单字符串Java 的 String 类供应 charAt() 从输入字符串中获取第 n 个字符(从 0 开始)作为 char。 因此,我们可以直接调用getChar(0)方法将单个字符串转换为char:
assertEquals('a', STRING_a.charAt(0));
但是,我们该当把稳,如果输入是空字符串,则 charAt() 方法调用会抛出 StringIndexOutOfBoundsException(下标越界非常):
assertThrows(StringIndexOutOfBoundsException.class, () -> "".charAt(0));
因此,在调用 charAt() 方法之前,我们该当检讨输入字符串是否为空或空。
多字符串我们已经学会了利用 charAt(0) 将单个字符串转换为 char。 如果输入是一个多字符的字符串,并且我们确切地知道我们想要将哪个字符转换为字符,我们仍旧可以利用 charAt() 方法。 例如,我们可以从输入字符串“Rejoice”中获取第四个字符('o'):
assertEquals('o', STRING_Rejoice.charAt(3));
此外,我们可以利用 String.toCharArray() 来获取包含所有字符的 char[] 数组:
assertArrayEquals(new char[] { 'R', 'e', 'j', 'o', 'i', 'c', 'e' }, STRING_Rejoice.toCharArray());
值得一提的是 toCharArray() 方法也适用于空字符串输入。 它返回一个空字符数组作为结果:
assertArrayEquals(new char[] {}, "".toCharArray());
除了 toCharArray(),String.getChars() 可以从给定的 String 中提取连续的字符到一个 char 数组中。 该方法吸收四个参数:
srcBegin - 字符串中第一个字符的索引,包括在内
srcEnd – 要复制的字符串中末了一个字符的索引,不包含
dst - 目标数组,这是我们的结果
dstBegin – 目标数组中的起始偏移量。 我们将通过一个例子来谈论这个问题。
首先,让我们从字符串“Rejoice”中提取“joi”并将其添补到预定义的 char 数组中:
@Test public void testGetChars(){ String STRING_Rejoice = "Rejoice"; char[] joi = new char[3]; STRING_Rejoice.getChars(2, 5, joi, 0); assertArrayEquals(new char[] { 'j', 'o', 'i' }, joi); }
如上面的测试所示,要调用 getChars(),我们首先该当有一个 char 数组来保存结果。
在示例中,当我们调用 getChars() 时,我们将 0 通报给 dstBegin。 这是由于我们希望转换后的结果从数组 joi中的第一个元素开始。
当然,有时,我们希望结果覆盖数组的中间部分。 然后我们可以将 dstBegin 设置为所需的值。
接下来,让我们看另一个将“joi”转换为字符并从第二个(索引=1)元素覆盖目标数组的示例:
@Test public void testGetChars2(){ String STRING_Rejoice = "Rejoice"; char[] anotherArray = new char[] { '#', '#', '#', '#', '#', '#' }; STRING_Rejoice.getChars(2, 5, anotherArray, 1); assertArrayEquals(new char[] { '#','j', 'o', 'i', '#', '#'}, anotherArray); }
因此,正如我们所见,我们将 dstBegin=1 通报给该方法并得到预期的结果。
结论
在本文中,我们学习了如何在 Java 中将 String 转换为 char。