java获取指定字符串的下一个

工作中遇到的奇葩需求

package com.hsi.utils;

import java.util.Arrays;
import java.util.List;

public class AddString {
	private static String qq ="";
	private static int num=0;
	/**
	 * 实现字符串+1
	 * 如ab9Z变为ac0A,
	 * @param a
	 * @return
	 */
	public static String returnString (String a) {
		//判断是否为纯数字
		qq = a;
		try{
			Integer pcode = Integer.valueOf(qq).intValue()+1;
			qq = ""+pcode;
			
		}catch(Exception e){
			
			qq = bre(String.valueOf(qq.charAt(qq.length()-1)));
		}
		return qq;
	}
	
	public static String bre(String az) {
		String y[] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
		 List list = Arrays.asList(y);
			for (int k = 0; k < y.length; k++) {
				if(qq.length()-num<0){
					break;
				}
				if(az.equals("Z")){
					//当等Z的时候,这个时候取的应该是A
					
					StringBuffer sb = new StringBuffer(qq);
					sb.replace(qq.length()-num-1, qq.length()-num, "A");
					qq = sb.toString();
					num++;
					qq = bre(String.valueOf(qq.charAt(qq.length()-1-num)));
					return qq;
					
				}
				 else if (az.equals("z")) {
					 StringBuffer sb = new StringBuffer(qq);
					sb.replace(qq.length()-num-1, qq.length()-num, "a");
					qq = sb.toString();
					 //qq = qq.substring(0,qq.length()-1)+"0";
					num++;
					 qq = bre(String.valueOf(sb.toString().charAt(sb.toString().length()-1-num)));
					 return qq;
				}
				 else if (az.equals("9")) {
					 StringBuffer sb = new StringBuffer(qq);
						sb.replace(qq.length()-num-1, qq.length()-num, "0");
						qq = sb.toString();
						num++;
					 qq = bre(String.valueOf(sb.toString().charAt(sb.toString().length()-1-num)));
					 return qq;
				}
				else{
					if(num > 0){
					if(!isNum(String.valueOf(qq.charAt(qq.length()-1-num)))){
						StringBuffer sb = new StringBuffer(qq);
						sb.replace(qq.length()-1-num, qq.length()-num, y[list.indexOf(az)+1]);
						qq = sb.toString();
					}
					if(isNum(String.valueOf(qq.charAt(qq.length()-1-num)))){
						StringBuffer sb = new StringBuffer(qq);
						int ss = Integer.valueOf(String.valueOf(qq.charAt(qq.length()-1-num))).intValue()+1;
						sb.replace(qq.length()-1-num, qq.length()-num, ""+ss);
						qq = sb.toString();
					}}
					else{
						StringBuffer sb = new StringBuffer(qq);
						sb.replace(qq.length()-num-1, qq.length()-num, y[list.indexOf(az)+1]);
						qq = sb.toString();
					}
					return qq;
				}
			}
			return null;
	}
	public static boolean isNum(String str){ 
		return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); 
	} 
}

 

转载于:https://my.oschina.net/whatwhy/blog/703322

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值