asd123dsf5 4dsf89,用java将字符串中的数字取出放到一个数组里,结果应...
发布网友
发布时间:2024-03-11 06:36
我来回答
共5个回答
热心网友
时间:2024-03-25 14:59
String strs="asd123dsf5 4dsf89"; String newstrs=""; //String keg="[0-9]+"; for (int i = 0; i < strs.length(); i++) { char str=strs.charAt(i); if(Num(str)){//判断当前的是不是数字 if(i+1<strs.length()){//判断下一个字符是不是数字 if(Num (strs.charAt(i+1))){ newstrs+=str; } else { newstrs+=str+","; } } else //最后一个字符 { newstrs+=str; } } } System.out.println(newstrs);
//判断是否是数字
static boolean Num(char c) { //boolean b=false; if(c>=48&&c<=57){ return true; } return false; }
热心网友
时间:2024-03-25 15:03
String有一个方法 split 按正则表达式来拆分字符串。 看一下jdk api 然后再看一下正则表达式 这个就很简单搞定了。 初学者自己搞定会有意外收获的,所以只讲下要用什么就不帮你写了。
热心网友
时间:2024-03-25 15:04
package 测试练习;
import java.util.*;
public class get_StringNum {
/**
*2012.6.2
*/
public static void main(String[] args) {
String str = "love23next234csdn3423javaeye";
str=str.trim();
String str2="";
if(str != null && !"".equals(str)){
for(int i=0;i<str.length();i++){
if(str.charAt(i)>=48 && str.charAt(i)<=57){
str2+=str.charAt(i);
}
}
}
System.out.println(str2);
}
}
output:
232343423
这个方法有个明显的缺点,只能把数字全部提取到一起,不能分别提取。当然也可以改进,有兴趣的朋友可以试试。
2 正则表达式
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class get_StringNum {
/**
*2012.6.2
*/
public static void main(String[] args) {
String a="love23next234csdn3423javaeye";
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(a);
System.out.println( m.replaceAll("").trim());
}
}
output:
232343423
Pattern ,Matcher是java.util.regex软件包里的两个类,具体用法大家可以查阅一下api。同样也不能单个提取数字。
3 集合类库
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class get_StringNum {
/**
*2012.6.2
*/
public static void main(String[] args) {
String a="love23next234csdn3423javaeye";
List<String> digitList = new ArrayList<String>();
Pattern p = Pattern.compile("[^0-9]");
Matcher m = p.matcher(a);
String result = m.replaceAll("");
for (int i = 0; i < result.length(); i++) {
digitList.add(result.substring(i, i+1));
}
System.out.println(digitList);
}
}
output:
[2, 3, 2, 3, 4, 3, 4, 2, 3]
相同的思路:
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class get_StringNum {
/**
*2012.6.2
*/
public static void main(String[] args) {
String a="love23next234csdn3423javaeye";
List<String> ss = new ArrayList<String>();
for(String sss:s.replaceAll("[^0-9]", ",").split(",")){
if (sss.length()>0)
ss.add(sss);
}
System.out.print(ss);
}
}
output:
[2, 3, 2, 3, 4, 3, 4, 2, 3]
很明显,利用正则表达式我们就可以分别提取数字了。
热心网友
时间:2024-03-25 15:00
用正则来匹配呀
热心网友
时间:2024-03-25 15:06
public static void main(String[] args){
String str = "asd123dsf5 4dsf89";
char[] chars = str.toCharArray();
List<String> array = new ArrayList<String>();
StringBuffer stringBuffer = new StringBuffer();
for(char b : chars){
if(Character.isDigit(b)){
stringBuffer.append(b);
}else{
if(stringBuffer.toString().length() > 0){
array.add(stringBuffer.toString());
stringBuffer.setLength(0);
}
}
}
if(stringBuffer.toString().length() > 0){
array.add(stringBuffer.toString());
}
for(String s : array){
System.out.println(s);
}
}