写一个处理字符串的方法,要求method(Strig s)返回该字符串中最后一个出现的数字,比如字符串“afsafa2as3434f3434dafsdf4”返回4,“adfjsdl3434adfjl;afds234fasdf3344adsf”返回3344
解决方案 »
- pop3协议的问题?
- Java 程序如何实现判断远程计算机snmp端口是否开放
- 网络传输应该用什么方法
- 请问这个this是什么意思
- Java初级问题..关于switch case 的.请进...
- 各位大虾 怎么用java从ftp上下东西啊
- IBM:谁快?Java还是 C/C++?—— 现代 JVM 中的分配比执行得最好的 malloc 实现还要快得多
- 一个小应用程序,求教
- 要学UML应先学软件工程么,UML怎样学习更好呢
- Where can I find free Preference Book about JBuilder?
- java新人求助!!!
- 怎么在javascript里让struts表单提交
String str = "fgiufg134yg3u4gr1g3rg14r"; Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(str); int start = 0, end = 0;
while (m.find(end)) {
start = m.start();
end = m.end();
} System.out.println(str.substring(start, end));
}可能有更简便的方法吧。
public static void main(String[] args) throws Exception {
print("afsafa2as3434f3434dafsdf4");
print("adfjsdl3434adfjl;afds234fasdf3344adsf");
}
public static void print(String s) {
boolean hasDigit = false;
StringBuffer sb = new StringBuffer(s);
StringBuffer result = new StringBuffer();
for (int i = sb.length() - 1; i >= 0; i--) {
if (Character.isDigit(sb.charAt(i))) {
result.insert(0, sb.charAt(i));
hasDigit = true;
}
else if (hasDigit) break;
}
System.out.println (result);
}
}
public class TestEnd {
public static void main(String[] args) {
String s="afsafa2as3434f3434dafsdf4";
String[] result=s.split("[^\\d+]");//按非数字拆分字符串
System.out.println(result[result.length-1]);
}
}
public class TestEnd {
public static void main(String[] args) {
String s="afsafa2as3434f3434dafsdf4";
String[] result=s.split("[^\\d+]");//按非数字拆分字符串
System.out.println(result[result.length-1]);
}
}
public static int method(String str) {
if (null == str) return -1;
final Pattern p = Pattern.compile("(\\d+)\\D*$");
Matcher matcher = p.matcher(str);
if (!matcher.find()) return -1; // 找不到数字
return Integer.parseInt(matcher.group(1));
}
public class StringLast {
public static void main(String[] args) {
String str = "111";
int count = 0;
for (int i=str.length()-1; i>=0; i--){
char c = str.charAt(i); if (c >= '0' && c <= '9'){
count ++;
}
if (count == 0 && i == 0)
System.out.printf("There is no Number char in \"%s\".", str); //应付没有数字的字符串
if (count != 0){
if (c < '0' || c > '9'){
System.out.print(str.substring(i+1, i+count+1)); //应付结尾或者中间有数字的字符串
return;
}
else if (i == 0){
if (count == str.length()){
System.out.print(str); //应付全是数字的字符串
return;
}
else{
System.out.print(str.substring(0, count)); //应付只有开始几个是数字的字符串
return;
}
}
}
}
}
}
import java.util.regex.*;
public class MyRegex2 {
public static void main(String[] args) {
String s="adfjsdl3434adfjl;afds234fasdf3344adsf";
Matcher m=Pattern.compile(".*\\D+(\\d+)\\D*$").matcher(s);
if(m.find()){
System.out.println(m.group(1));
}
}
}
改了下:
import java.util.regex.*;
public class MyRegex2 {
public static void main(String[] args) {
String s="sdf234234334444dfdd23f";
Matcher m=Pattern.compile("\\D*(\\d+)\\D*$").matcher(s);
if(m.find()){
System.out.println(m.group(1));
}
}
}
public static void main(String[] args) {
String s="afsafa2as3434f3434dafsdf4";
String[] result=s.split("[^\\d+]");//按非数字拆分字符串
System.out.println(result[result.length-1]);
}
}
这个就不错
{
Pattern p=Pattern.compile(".*?(\\d+)[^\\d]*$");
Matcher m=p.matcher(s);
return m.find()?m.group(1):null;
}
public static void main(String[] args) {
String str = "adfjsdl3434adfjl;afds234fasdf3344adsf";
System.out.println(getLastNumber(str));
} public static String getLastNumber(String str) {
if(str == null || str.length() == 0) {
return null;
}
char[] chs = str.toCharArray();
int offset = 0;
boolean isNonNumberStart = false;
for(int i = 0; i < chs.length; i++) {
if(!isNumber(chs[i])) {
isNonNumberStart = true;
continue;
}
if(isNonNumberStart) {
isNonNumberStart = false;
offset = 0;
}
chs[offset++] = chs[i];
}
return new String(chs, 0, offset);
}
private static boolean isNumber(char c) {
return (c >= '0') && (c <= '9');
}
}
"^.*?(?<!\\d)(\\d+)(?!\\d+).*$"
匹配最后一个出现的数字
"^.*(?<!\\d)(\\d+)(?!\\d+).*$"测试过,没有问题滴。
"^.*?(? <!\\d)(\\d+)(?!\\d).*$"
匹配最后一个出现的数字
"^.*(? <!\\d)(\\d+)(?!\\d).*$"
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s=f("adfjsdl3434adfjl;afds234fasdf3344adsf");
StringBuffer sb=new StringBuffer(s);
System.out.println(sb.reverse());
}
public static String f(String s)
{
String str="";
for(int i=s.length()-1;i>-1;i--)
{ char c1=s.charAt(i);
char c2=s.charAt(i-1);
//将char封装成character
Character ch1=Character.valueOf(c1);
Character ch2=Character.valueOf(c2);
//如果不是数字
if(!ch1.isDigit(c1))
{
}
else if(ch1.isDigit(c1)&&!ch2.isDigit(c2))
{
str+=c1;
return str;
}
else
{
str+=c1;
}
}
return null;
}
}