在 Java 中将字符串转换为整数数组
在 Java 语言中,可以有几种方法来考虑问题陈述。
让我们首先将问题陈述分为两部分。
- 将一个简单的字符串转换为字符串数组。
- 将字符串数组转换为整数数组。
这是以上两个步骤的示意图:
使用 replaceAll()
方法将字符串转换为整数数组
我们可以使用 String
类的 replaceAll()
方法,该方法带有 regex
和 replacement
两个参数。此方法将用给定的替换值替换给定的正则表达式。在链函数的末尾,使用了 split()
方法。此方法根据给定的字符拆分字符串。
当值被拆分并收集到 String 数组中时,我们应该使用 Integer.parseInt()
函数。由于 parseInt()
方法抛出 NumberFormatException
,因此该语句应放在一个 try...catch
块中,以捕获可能的异常。
下面是示例程序,演示了如何将字符串转换为 int 数组:
package stringToIntArray;
import java.util.Arrays;
public class ConvertStringToIntArray {
public static void main(String... args) {
String testString = "[1,2,356,678,3378]";
String[] separatedStrings = testString.replaceAll("\\[", "")
.replaceAll("]", "").split(",");
int[] intArray = new int[separatedStrings.length];
for (int i = 0; i < separatedStrings.length; i++) {
try {
intArray[i] = Integer.parseInt(separatedStrings[i]);
} catch (Exception e) {
System.out.println("Unable to parse string to int: " + e.getMessage());
}
}
System.out.println(Arrays.toString(intArray));
}
}
输出:
[1,2,356,678,3378]
如果 testString
的值为 [1,2,356,678,3378,f]
,它将引发异常,并且输出将如下所示。
Unable to parse string to int: For input string: "f"
[1, 2, 356, 678, 3378, 0]
使用 Java 8 流库将字符串转换为 Int 数组
在下面的程序中,首先,我们采用了 Arrays.stream()
函数。为了提供一个流,我们使用了 String
类的 substring()
方法,该方法接受第一个和最后一个索引参数。在返回的 String split()
函数上,该函数基于定界符分割给定的 String。
在流上应用了 map()
函数。此函数将任何函数作为参数并返回流。我们给出了 String 类的 trim()
函数,该函数消除了前导和后导空格。parseInt
将收到的给定字符串转换为整数。toArray()
将转换后的 int 元素转储到 Array 中。
package stringToIntArray;
import java.util.Arrays;
public class StringToIntUsingJava 8Stream {
public static void main(String[] args) {
String str = "[1, 2, 3, 4, 5]";
int[] arr = Arrays.stream(str.substring(1, str.length() - 1).split(","))
.map(String::trim).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(arr));
}
}
输出:
[1, 2, 3, 4, 5]
使用 StringTokenizer 和函数将字符串转换为整数数组
使用其构造函数 StringTokenizer()
实例化 StringTokenizer 对象。构造函数使用输入的 String 和定界符形成标记化的 String。同时创建一个 String 和 int 数组,其大小作为令牌化 String 中的令牌。
countTokens()
方法对令牌计数,该令牌在内部跳过定界符。hasMoreTokens()
检查令牌生成器字符串中是否存在任何令牌。nextToken()
从字符串中检索下一个标记。如果字符串中没有令牌,则此方法将引发 NoSuchElementException
。
迭代将 String 令牌转换为整数并收集到整数数组中。
package stringToIntArray;
import java.util.StringTokenizer;
public class StringToIntUsingStringTokenizer {
public static void main(String[] args) {
String testString = "[1,2,3,4]";
StringTokenizer stk = new StringTokenizer(testString, "[,]");
String[] strings = new String[stk.countTokens()];
int[] integerArray = new int[stk.countTokens()];
int i = 0;
while (stk.hasMoreTokens()) {
strings[i] = stk.nextToken();
integerArray[i] = Integer.parseInt(strings[i]);
i++;
}
for (int j = 0; j < integerArray.length; j++)
System.out.println("number[" + j + "]=" + integerArray[j]);
}
}
输出:
number[0]=1
number[1]=2
number[2]=3
number[3]=4
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn相关文章 - Java String
- 如何从 Java 中的字符串中删除子字符串
- 如何将 Java 字符串转换为字节
- 如何在 Java 中以十六进制字符串转换字节数组
- 如何在 Java 中执行字符串到字符串数组的转换
- 用 Java 生成随机字符串
- Java 中的交换方法