java 将字符串中数字进行排序并返回字符串

问题描述

比如我有一字符串"10 50 5 20 36"需要对它进行排序

问题分析

我们一看间我们可能马上就想到了Integer.parseInt()方法,但是str中包含了空格,parseInt是无法解析的

  • 那我们只能用split()方法,先将字符串转化为字符数组
  • 在将数组中的数字转化为int
  • 排序
  • 再拼接成字符串
代码
	String s = "10 50 5 20 36";
	String[] arr = s.split(" ");
	int [] arrInt = new int[arr.length];
	for (int i = 0; i < arrInt.length; i++) {
		arrInt[i] =Integer.parseInt(arr[i]);
	}
	Arrays.sort(arrInt);
	System.out.println(Arrays.toString(arrInt));
	String new_S = "";
	for (int i = 0; i < arrInt.length; i++) {
		new_S += arrInt[i]+" ";
	}
	System.out.println(new_S);

在存储字符串时,我们也可以使用StringBuilder等,节省空间,速度更快。

Java中,你可以通过将字符串转换为整数数组,然后对数组进行排序,最后再把排序后的整数数组转换回字符串数组的方式来按照数值顺序对字符串中的数字进行排序。以下是一个简单的步骤: 1. **创建一个方法**:首先定义一个方法,接收一个包含数字字符串作为输入。 ```java public String[] sortNumbersInString(String input) { // ... } ``` 2. **分割字符串**:使用`split()`方法将字符串按空格或其他分隔符分解成一个字符数组。 ```java char[] chars = input.split("\\s+"); ``` 3. **转换为整数数组**:遍历字符数组,将每个字符尝试转换为整数。如果能成功转换,则添加到结果数组中;如果无法转换,可以忽略它。 ```java int[] numbers = new int[chars.length]; for (int i = 0; i < chars.length; i++) { try { numbers[i] = Integer.parseInt(chars[i]); } catch (NumberFormatException e) { // 忽略非数字字符 } } ``` 4. **对整数数组排序**:使用`Arrays.sort()`方法对数组进行升序排序。 ```java Arrays.sort(numbers); ``` 5. **转换回字符串**:将排序后的整数数组转换回字符串连接成一个新的字符串数组。 ```java StringBuilder sb = new StringBuilder(); for (int num : numbers) { sb.append(num).append(" "); } String[] sortedStrings = sb.toString().trim().split("\\s+"); ``` 6. **返回排序后的字符串数组**:最后返回这个排序后的字符串数组。 完整代码示例: ```java public String[] sortNumbersInString(String input) { char[] chars = input.split("\\s+"); int[] numbers = new int[chars.length]; for (int i = 0; i < chars.length; i++) { try { numbers[i] = Integer.parseInt(chars[i]); } catch (NumberFormatException e) { continue; } } Arrays.sort(numbers); StringBuilder sb = new StringBuilder(); for (int num : numbers) { sb.append(num).append(" "); } String sortedString = sb.toString().trim(); return sortedString.split("\\s+"); } // 示例 String input = "abc 123 def 456"; String[] sortedResult = sortNumbersInString(input); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值