高分球算法--求算法分割字符串为数组 

wuy13862574600 2013-03-01 08:31:15
求算法分割字符串为数组

将字符串分割为三个元素的数组,

如 Abc2.13张三 分割成 Abc 2.13 张三

Abc张三 分割成 ABC张三 “” “”

张三23李四1.5 分割成 张三23李四 1.5 “”



以此,我的需求是对类似的东西进行拖拽,增加最后面的数组,如果没有数字表示从零开始。如果中间有数字,从最后的数字开始递增货递减,所以有上面的需求。
...全文
282 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoeg 2013-03-10
  • 打赏
  • 举报
回复

public static void main(String...args) throws Exception{
    String s="张三23李四1.5王五";
    int sep1=-1,sep2=-1;
    for(int i=s.length()-1;i>=0;i--){
      char c=s.charAt(i);
      if('0'<=c&&c<='9'){
        if(sep2<0) sep2=i+1;
      }else if(c=='.') ;
      else if(sep2>0){
        sep1=i+1;
        break;
      }
    }
    String s1=sep1>0?s.substring(0,sep1):s;
    String s2=sep1>0?s.substring(sep1,sep2):"";
    String s3=sep2>0?s.substring(sep2):"";
    System.out.println(s1+" , "+s2+" , "+s3);
  }
冰思雨 2013-03-09
  • 打赏
  • 举报
回复
public class Split {

	/**
	 * 测试用例
	 */
	public static void main(String[] args) {
		final String message = "Abc2.13张三";
		String [] result = split(message);
		for(String sub :result){
			System.out.println(sub);
		}
	}

	private static final String DIGITs = "1234567890.";
	public static String[] split(String message) {
		if(message==null)return null;
		char[] msg = message.toCharArray();
		int endIndex = msg.length;
		for(;endIndex>0 && DIGITs.indexOf(msg[endIndex-1])<0;endIndex--);
		int beginIndex = endIndex;
		for(;beginIndex>0 && DIGITs.indexOf(msg[beginIndex-1])>=0;beginIndex--);
		if(beginIndex==endIndex)return new String[]{message};
		if(endIndex==msg.length)return new String[]{message.substring(0,beginIndex),message.substring(beginIndex,endIndex)};
		return new String[]{message.substring(0,beginIndex),message.substring(beginIndex,endIndex),message.substring(endIndex)};
	}

}
zhzeqiang 2013-03-08
  • 打赏
  • 举报
回复
你都写出来了,就直接分割就行 了
wuy13862574600 2013-03-08
  • 打赏
  • 举报
回复
从最后边往前找,如果最后边的字符能够作为数字就分割成两部分,前边一部分,后边的数字一部分。 如果最后边的字符不是数字,则继续往前找,如果前面找到数字,则分为三部分,最前的数字之前的,然后就是中间的数字,最后是数字之后的 字符 如果字符里没有数字,则直接作为一个部分,不需要处理。 注意数字也需要支持小数的数字。 例如分割实例效果如下 分割的字符 分割后的效果 23Def 空格 23 def Ab23cde Ab 23 cde Abcde Abcde Abc23deff223gh Abc23deff 223 gh Ab23 Ab 23
sca4441479 2013-03-08
  • 打赏
  • 举报
回复
楼主 给你说下我的思路 ,将字符串查找,先判断如果找到数字,在数字前、后都加上逗号或其他,然后用splite分组,没找到就单独一组了。
yousun4688 2013-03-01
  • 打赏
  • 举报
回复
没有规律即使是正则表达式也不行啊
zqfddqr 2013-03-01
  • 打赏
  • 举报
回复
需求不明确啊
_豆包儿_ 2013-03-01
  • 打赏
  • 举报
回复
LZ举三个个例想说明什么呢??
wangjinlong3768038 2013-03-01
  • 打赏
  • 举报
回复
看实例看不出规律, 需求说明看不懂。 楼主再重新描述清楚点吧
zhang527 2013-03-01
  • 打赏
  • 举报
回复
顶一个,不是很清楚
Mourinho 2013-03-01
  • 打赏
  • 举报
回复
表示看不懂需求
七神之光 2013-03-01
  • 打赏
  • 举报
回复
需求不明啊
熊猫大虾 2013-03-01
  • 打赏
  • 举报
回复
完全没有规律可循
熊猫大虾 2013-03-01
  • 打赏
  • 举报
回复
引用 2 楼 whz137458 的回复:
使用正则表达式可简单解决!!!
说的这么简单,那你写出来呀?
rome_wu 2013-03-01
  • 打赏
  • 举报
回复
使用正则表达式可简单解决!!!
  • 打赏
  • 举报
回复
你这完全没有规律。
「已注销」 2013-03-01
  • 打赏
  • 举报
回复
大概是从后往前找,找到第一个\d(+)([.]\d(*))(?),然后其左边作为数组第一个元素,右边作为数组第3个元素;如果没有找到直接将该字符串作为数组第一个元素。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧