登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

忆风的博客

http://www.cnblogs.com/dhjdhja

 
 
 

日志

 
 
 
 

Java 字符串操作  

2010-05-19 17:27:00|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

public class HelloWorld
{
public static void main(String   args[])
{
  String testStr = "abcdefg";
  System.out.println("测试字符串:"+testStr);
  System.out.println("第一个字母:"+testStr.substring(0,1));
  System.out.println("最后一个字母:"+testStr.substring(testStr.length()-1,testStr.length()));
  System.out.println("删除第一个字母:"+testStr.substring(1));
  System.out.println("删除最后一个字母:"+testStr.substring(0,testStr.length()-1));
}
}

 

 

//字符串操作 Map 和list运用

public static void main(String[] args) {  
 
        String source = "22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w,9:c,9:d,10:r";  
        String result = parse(source);  
 
        System.out.println(result);  
    }  
 
   public static String parse(String source) {  
        List<String> list = null;  
        StringBuffer buffer = new StringBuffer();  
        String result = null;  
        Map<String, List<String>> map = new HashMap<String, List<String>>();  
          
        String[] array = source.split("\\,");  
 
        for(String e : array) {  
            String[] entry = e.split(":");  
            String key = entry[0];  
            String value = entry[1];  
 
            if(map.get(key) == null) {  
                list = new ArrayList<String>();  
                list.add(value);  
                map.put(key, list);  
            } else {  
                list = map.get(key);  
                if(!list.contains(value)) {  
                    list.add(value);  
                }  
            }  
       }  
 
        Iterator iter = map.keySet().iterator();  
        while(iter.hasNext()) {  
            String key = (String) iter.next();  
            list = map.get(key);  
            buffer.append(key + ":");  
            for(int i = 0; i < list.size(); i++) {  
                buffer.append(list.get(i));  
                if(i != list.size() - 1) {  
                    buffer.append(",");  
                }  
            }  
 
            buffer.append(";");  
        }  
 
        result = buffer.toString();  
 
        if(buffer.charAt(buffer.length() - 1) == ';')  {  
            result = result.substring(0, result.length() - 1);  
        }  
 
        return result;  
    } 

 

 

//正则表达式http://www.javaeye.com/topic/67398

package com.ygj.util;

 

import java.util.*;

 

import org.apache.oro.text.regex.*;

 

 

/**

* 类简介: 使用正则表达式验证数据或提取数据,类中的方法全为静态的
* 主要方法:1. isHardRegexpValidate(String source, String regexp)

              区分大小写敏感的正规表达式批配  

 

* 2. isSoftRegexpValidate(String source, String regexp)

* 不区分大小写的正规表达式批配

* 3. getHardRegexpMatchResult(String source, String regexp)

* 返回许要的批配结果集(大小写敏感的正规表达式批配)

* 4. getSoftRegexpMatchResult(String source, String regexp)

* 返回许要的批配结果集(不区分大小写的正规表达式批配)

* 5 getHardRegexpArray(String source, String regexp)

* 返回许要的批配结果集(大小写敏感的正规表达式批配)

* 6. getSoftRegexpMatchResult(String source, String regexp)

* 返回许要的批配结果集(不区分大小写的正规表达式批配)

* 7. getBetweenSeparatorStr(final String originStr,final char leftSeparator,final char rightSeparator)

* 得到指定分隔符中间的字符串的集合

*

* @mail 

* @author ygj

*

*/ 

public final class Regexp

{

 

/** 保放有四组对应分隔符 */ 

static final Set SEPARATOR_SET=new TreeSet();

{

SEPARATOR_SET.add("(");

SEPARATOR_SET.add(")");

SEPARATOR_SET.add("[");

SEPARATOR_SET.add("]");

SEPARATOR_SET.add("{");

SEPARATOR_SET.add("}");

SEPARATOR_SET.add("<");

SEPARATOR_SET.add(">");

}

 

 

/** 存放各种正规表达式(以key->value的形式) */ 

public static HashMap regexpHash = new HashMap();

 

/** 存放各种正规表达式(以key->value的形式) */ 

public static List matchingResultList = new ArrayList();

 

private Regexp()

{

 

}

/**

* 返回 Regexp 实例

* @return

*/ 

public static Regexp getInstance()

{

return new Regexp();

}

 

/**

* 匹配图象 


*

* 格式: /相对路径/文件名.后缀 (后缀为gif,dmp,png)

*

* 匹配 : /forum/head_icon/admini2005111_ff.gif 或 admini2005111.dmp


*

* 不匹配: c:/admins4512.gif

*

*/ 

public static final String icon_regexp = "^(/{0,1}\\w){1,}\\.(gif|dmp|png|jpg)$|^\\w{1,}\\.(gif|dmp|png|jpg)$";

 

/**

* 匹配email地址 


*

* 格式: 

*

* 匹配 :  或  


*

* 不匹配:  或 

*

*/ 

public static final String email_regexp = "(?:\\w[-._\\w]*\\w@\\w[-._\\w]*\\w\\.\\w{2,3}$)";

 

/**

* 匹配匹配并提取url 


*

* 格式: XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX

*

* 匹配 : http://www.suncer.com 或


*

* 提取(MatchResult matchResult=matcher.getMatch()):

* matchResult.group(0)= http://www.suncer.com:8080/index.html?login=true

* matchResult.group(1) = http

* matchResult.group(2) = www.suncer.com

* matchResult.group(3) = :8080

* matchResult.group(4) = /index.html?login=true

*

* 不匹配: c:\window

*

*/ 

public static final String url_regexp = "(]*)";

 

/**

* 匹配并提取http 


*

* 格式: http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 或  或 https://XXX

*

* 匹配 : http://www.suncer.com:8080/index.html?login=true


*

* 提取(MatchResult matchResult=matcher.getMatch()):

* matchResult.group(0)= http://www.suncer.com:8080/index.html?login=true

* matchResult.group(1) = http

* matchResult.group(2) = www.suncer.com

* matchResult.group(3) = :8080

* matchResult.group(4) = /index.html?login=true

*

* 不匹配: 

*

*/ 

public static final String http_regexp = "(http|https|ftp)://([^/:]+)(:\\d*)?([^#\\s]*)";

 

/**

* 匹配日期 


*

* 格式(首位不为0): XXXX-XX-XX 或 XXXX XX XX 或 XXXX-X-X 


*

* 范围:1900--2099 


*

* 匹配 : 2005-04-04 


*

* 不匹配: 01-01-01

*

*/ 

public static final String date_regexp = "^((((19){1}|(20){1})d{2})|d{2})[-\\s]{1}[01]{1}d{1}[-\\s]{1}[0-3]{1}d{1}$";// 匹配日期

 

/**

* 匹配电话 


*

* 格式为: 0XXX-XXXXXX(10-13位首位必须为0) 或0XXX XXXXXXX(10-13位首位必须为0) 或 


* (0XXX)XXXXXXXX(11-14位首位必须为0) 或 XXXXXXXX(6-8位首位不为0) 或

* XXXXXXXXXXX(11位首位不为0) 


*

* 匹配 : 0371-123456 或 (0371)1234567 或 (0371)12345678 或 010-123456 或

* 010-12345678 或 12345678912 


*

* 不匹配: 1111-134355 或 0123456789

*

*/ 

public static final String phone_regexp = "^(?:0[0-9]{2,3}[-\\s]{1}|\\(0[0-9]{2,4}\\))[0-9]{6,8}$|^[1-9]{1}[0-9]{5,7}$|^[1-9]{1}[0-9]{10}$";

 

/**

* 匹配身份证 


*

* 格式为: XXXXXXXXXX(10位) 或 XXXXXXXXXXXXX(13位) 或 XXXXXXXXXXXXXXX(15位) 或

* XXXXXXXXXXXXXXXXXX(18位) 


*

* 匹配 : 0123456789123 


*

* 不匹配: 0123456

*

*/ 

public static final String ID_card_regexp = "^\\d{10}|\\d{13}|\\d{15}|\\d{18}$";

 

/**

* 匹配邮编代码 


*

* 格式为: XXXXXX(6位) 


*

* 匹配 : 012345 


*

* 不匹配: 0123456

*

*/ 

public static final String ZIP_regexp = "^[0-9]{6}$";// 匹配邮编代码

 

 

/**

* 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号< 反斜杠\ 即空格,制表符,回车符等 )


*

* 格式为: x 或 一个一上的字符 


*

* 匹配 : 012345 


*

* 不匹配: 0123456

*

*/ 

public static final String non_special_char_regexp = "^[^'\"\\s].+$";//'<\\;,:-<>\\s].+$";// 匹配邮编代码

 

 

/**

* 匹配非负整数(正整数 + 0)

*/ 

public static final String non_negative_integers_regexp = "^\\d+$";

 

/**

* 匹配不包括零的非负整数(正整数 > 0)

*/ 

public static final String non_zero_negative_integers_regexp = "^[1-9]+\\d*$";

 

/**

*

* 匹配正整数

*

*/ 

public static final String positive_integer_regexp = "^[0-9]*[1-9][0-9]*$";

 

/**

*

* 匹配非正整数(负整数 + 0)

*

*/ 

public static final String non_positive_integers_regexp = "^((-\\d+)|(0+))$";

 

/**

*

* 匹配负整数

*

*/ 

public static final String negative_integers_regexp = "^-[0-9]*[1-9][0-9]*$";

 

/**

*

* 匹配整数

*

*/ 

public static final String integer_regexp = "^-?\\d+$";

 

/**

*

* 匹配非负浮点数(正浮点数 + 0)

*

*/ 

public static final String non_negative_rational_numbers_regexp = "^\\d+(";

 

/**

*

* 匹配正浮点数

*

*/ 

public static final String positive_rational_numbers_regexp = "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$";

 

/**

*

* 匹配非正浮点数(负浮点数 + 0)

*

*/ 

public static final String non_positive_rational_numbers_regexp = "^((-\\d+(";

 

/**

*

* 匹配负浮点数

*

*/ 

public static final String negative_rational_numbers_regexp = "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$";

 

/**

*

* 匹配浮点数

*

*/ 

public static final String rational_numbers_regexp = "^(-?\\d+)(";

 

/**

*

* 匹配由26个英文字母组成的字符串

*

*/ 

public static final String letter_regexp = "^[A-Za-z]+$";

 

/**

*

* 匹配由26个英文字母的大写组成的字符串

*

*/ 

public static final String upward_letter_regexp = "^[A-Z]+$";

 

/**

*

* 匹配由26个英文字母的小写组成的字符串

*

*/ 

public static final String lower_letter_regexp = "^[a-z]+$";

 

/**

*

* 匹配由数字和26个英文字母组成的字符串

*

*/ 

public static final String letter_number_regexp = "^[A-Za-z0-9]+$";

 

/**

*

* 匹配由数字、26个英文字母或者下划线组成的字符串

*

*/ 

public static final String letter_number_underline_regexp = "^\\w+$";

 

/**

* 添加正规表达式 (以key->value的形式存储)

*

* @param regexpName

* 该正规表达式名称 `

* @param regexp

* 该正规表达式内容

*/ 

public void putRegexpHash(String regexpName, String regexp)

{

regexpHash.put(regexpName, regexp);

}

 

/**

* 得到正规表达式内容 (通过key名提取出value[正规表达式内容])

*

* @param regexpName

* 正规表达式名称

*

* @return 正规表达式内容

*/ 

public String getRegexpHash(String regexpName)

{

if (regexpHash.get(regexpName) != null)

{

return ((String) regexpHash.get(regexpName));

}

else 

{

System.out.println("在regexpHash中没有此正规表达式");

return "";

}

}

 

/**

* 清除正规表达式存放单元

*/ 

public void clearRegexpHash()

{

regexpHash.clear();

return;

}

 

/**

* 大小写敏感的正规表达式批配

*

* @param source

* 批配的源字符串

*

* @param regexp

* 批配的正规表达式

*

* @return 如果源字符串符合要求返回真,否则返回假 如: Regexp.isHardRegexpValidate(") 返回真

*/ 

public static boolean isHardRegexpValidate(String source, String regexp)

{

 

try 

{

// 用于定义正规表达式对象模板类型

PatternCompiler compiler = new Perl5Compiler();

 

// 正规表达式比较批配对象

PatternMatcher matcher = new Perl5Matcher();

 

// 实例大小大小写敏感的正规表达式模板

Pattern hardPattern = compiler.compile(regexp);

 

// 返回批配结果

return matcher.contains(source, hardPattern);

 

}

catch (MalformedPatternException e)

{

e.printStackTrace();

 

}

return false;

}

  评论这张
 
阅读(2037)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018