1.一字符串s前面有m个非数字字符,后面是n个数字字符;我现在要提取后面的n个数字转为一个int值public class Ugly { public static void main(String[] args) {
//字符串s前面有m个非数字字符,后面是n个数字字符;
//如:
String s="HELLO_WORLD52";
//String s="HELLO_123WORLD52";//2.最好这样的情况个也能把52提取出来 int n=-1;
//这里帮我提取一下数字啊。
System.out.println(n);//输出52;
}
}
//字符串s前面有m个非数字字符,后面是n个数字字符;
//如:
String s="HELLO_WORLD52";
//String s="HELLO_123WORLD52";//2.最好这样的情况个也能把52提取出来 int n=-1;
//这里帮我提取一下数字啊。
System.out.println(n);//输出52;
}
}
public static void main(String[] args) {
Test t = new Test();
String s = "HELLO_WORLD52ADK333ASD22", s1 = "";
String[] str = s.split("\\D");
int n = 0;
for (String ss : str) {
s1 += ss;
}
n = Integer.parseInt(s1);
System.out.println(n);
}
public static void main(String[] args){
String s="HELLO_WORLD52";
Pattern p = Pattern.compile("\\D*?(\\d+)");
Matcher m = p.matcher(s1);
m.find();
System.out.println(m.group(1));
}这种方法第二个取不出来,我再试试
String s="HELLO_WORLD52";
String s1="HELLO_123WORLD52dad343";//2.
Pattern p = Pattern.compile("\\D*?(\\d+)");
Matcher m = p.matcher(s1);
while( m.find()){
System.out.println(m.group(1));
}
}
import java.util.regex.Pattern;public class RegexTest { public static Integer test(String str) {
if (str == null || str.trim().length() == 0) return null;
final String REGEX = "^.*?(-?\\d+)$";
Pattern p = Pattern.compile(REGEX, Pattern.DOTALL); //要想效率高点把它静态化
Matcher m = p.matcher(str);
if (!m.matches()) return null;
return new Integer(m.group(1));
} public static void main(String[] args) {
System.out.println(test(null));
System.out.println(test(" "));
System.out.println(test("dafsakgjr123faefafe"));
System.out.println(test("125455"));
System.out.println(test("\t \n -10"));
System.out.println(test("HELLO_WORLD52"));
System.out.println(test("HELLO_123WORLD52"));
}}
输出:
null
null
null
125455
-10
52
52
public static void main(String[] args) {
String s = "HelloWord345andjava34";
Pattern p = Pattern.compile("[\\d]+");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group());
}
}
}
2. 利用java的正则表达式应该是最直接的,楼上正解。
3. java也有Character.isDigital之类来判定字符是否数字之类的函数,读取连续的就可以了。4.javacc等等都可以的。建议采用楼上的。
String str="abcd34343bbbc123a3434b343";
char[] c=str.toCharArray();
String s="";
int num=0;
for(int i=0;i<c.length;i++)
{
if(c[i]>47 && c[i]<58)
{
if(num ==0 || i-num==1)
{
s+=c[i];
num=i;
}
else
{
System.out.println(s);
s=String.valueOf(c[i]);
num=i;
}
}
}
System.out.println(s);