Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » 编程/算法/API  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:【求助】一道字符串处理的编程题 [Re:Kappa]
bluecrystal





发贴: 2788991
积分: 48
于 2005-09-27 11:39 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
仅针对该例子写的一段代码
没有经过严格测试,仅仅供学习交流
运行环境: xp pro sp2 jdk1.4

package com.jiuzhai.blue.test;

public class StrCode {

  /**
   * Encode a string
   * @param str
   * @return
   */
  public static String encode(String str) {
   StringBuffer newStr = new StringBuffer();
   int len = str.length();
   for(int i=0; i<len; i++) {
     char first = str.charAt(i);
     if(first == '0') {
       newStr.append(first);
       if((i+1) < len) {
        newStr.append("_");
      }
       continue;
     }
     
     if((first > '0') && (first <= '9')) {
      if((i+1) >= len) {
        newStr.append(first);
        break;
      } else {
        int iRepeat = Integer.parseInt(String.valueOf(first)) + 1;
        for(int j=0; j<iRepeat; j++) {
          newStr.append(str.charAt(i+1));
        }
        newStr.append("_");
      }
      continue;
     }
     
     if(first == '_') {
       newStr.append("\\UL");
       if((i+1) < len) {
        newStr.append("_");
      }
       continue;
     }
     
     //default
     newStr.append(str.charAt(i));
    if((i+1) < len) {
     newStr.append("_");
   }
   }
   return newStr.toString();
  }
  
  /**
   * Decode a string
   * @param str
   * @return
   */
  public static String decode(String str) {
    StringBuffer newStr = new StringBuffer();
    String[] strs = str.split("_");
    int len = strs.length;
    for(int i=0; i<len; i++) {
if(strs[i].length() == 1) {
  newStr.append(strs[i]);
  continue;
}

if("\\UL".equals(strs[i])) {
  newStr.append("_");
  continue;
}
int iLen = strs[i].length();
newStr.append(String.valueOf(iLen-1));
    }
    return newStr.toString();
  }
  
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
//get input string
    if(args.length == 0) {
      System.out.println("input a string, plz!");
     return;  
    }
    if(args.length > 1) {
     System.out.println("The parameter is too many, exit!");
      return;  
    }
    String ori = args[0];
    System.out.println("before: " + ori);
    String enc = encode(ori);
    System.out.println("after: " + enc);
    String dec = decode(enc);
    System.out.println("decode: " + dec);
  }

}



测试用例输出:

before: 23s0_d41
after: 333_ssss_s_0_\UL_d_11111_1
decode: 23s0_d41



Just Software & Travel
-- 我的blog -- 技术点滴/经验分享

话题树型展开
人气 标题 作者 字数 发贴时间
10398 【求助】一道字符串处理的编程题 Kappa 376 2005-09-27 09:01
8775 Re:【求助】一道字符串处理的编程题 bluecrystal 31 2005-09-27 09:05
9138 Re:【求助】一道字符串处理的编程题 Kappa 19 2005-09-27 09:16
8455 Re:【求助】一道字符串处理的编程题 why 80 2005-09-28 22:05
8760 Re:【求助】一道字符串处理的编程题 intothehit 16 2005-09-27 10:12
8602 Re:【求助】一道字符串处理的编程题 bluecrystal 4364 2005-09-27 11:39
9105 Re:【求助】一道字符串处理的编程题 Kappa 26 2005-09-27 11:47
8681 Re:【求助】一道字符串处理的编程题 bluecrystal 84 2005-09-27 11:56
8652 Re:【求助】一道字符串处理的编程题 panther 5196 2005-09-28 21:28
8515 bluecrystal同学程序存在一个小bug Python 106 2005-10-13 12:21
9003 Re:bluecrystal同学程序存在一个小bug bluecrystal 195 2005-10-13 12:59

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923