去除字符串中的数字 或者 保留数字

提取字符串的特殊内容

package sun.rain.amazing;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.Test;

/**
 *  编写一个程序,提取字符串中的数字符号。
 *      依靠string类的各种方法 来完成相应的要求
 * @author sunRainAmazing
 * 
 */
public class GetNumberByStringMethod {

    public static String STR = "abc123efg789hik007";


    /**
     * 采用charAt(int index) 方法
     *      要知道数字 0-9对应的char的int类型的数据 为 48 -57
     */
    @Test
    public void getNumber_charAt(){
        StringBuffer sBuffer = new StringBuffer();
        for (int i = 0; i < STR.length(); i++) {
            char ch = STR.charAt(i);
            if(48<=ch&&ch<=57){
                sBuffer.append(ch);
            }
        }
        System.out.println((char)9);
        System.out.println(sBuffer.toString());

    }



    /**
     * String substring(int beginIndex) 
     *      返回一个新的字符串,它是此字符串的一个子字符串。 
     */
    @Test
    public void getNumber_substring(){
        StringBuffer sBuffer = new StringBuffer();
        for (int i = 0; i <STR.length(); i++) {
            for (int j = 0; j < 10; j++) {
                if((j+"").equals(STR.substring(i, i+1))){
                    sBuffer.append(STR.substring(i, i+1));
                }
            }
        }
        System.out.println(sBuffer.toString());

        //System.out.println(Integer.parseInt("a")); 
        //java.lang.NumberFormatException: For input string: "a"
    }




    /**
     * char[] toCharArray() 
     *      将此字符串转换为一个新的字符数组。 
     *  要知道数字 0-9对应的char的int类型的数据 为 48 -57
     */
    @Test
    public void getNumber_toCharArray(){
        StringBuffer sBuffer = new StringBuffer();
        char[] ch = STR.toCharArray();
        for (int i = 0; i <ch.length; i++) {
            if(48<=ch[i]&&ch[i]<=57){
                sBuffer.append(ch[i]);
            }
        }
        System.out.println(sBuffer.toString());

        //System.out.println(Integer.parseInt("a")); 
        //java.lang.NumberFormatException: For input string: "a"
    }




    /**
     *  采用正则表达式的形式
     */
    @Test
    public void getNumber_patterReg(){
        StringBuffer sBuffer = new StringBuffer();
        String regex = "\\d"; // \d 数字:[0-9] 
        //1、注册 匹配格式
        Pattern pattern = Pattern.compile(regex);
        //2、调用匹配 目标字符串
        Matcher matcher = pattern.matcher(STR);
        //进行依次查找相应的内容
        while (matcher.find()) {
            //System.out.println(matcher.group());
            sBuffer.append(matcher.group());
        }
        System.out.println(sBuffer.toString());
    }


    /**
Pattern 
     public static Pattern compile(String regex)将给定的正则表达式编译到模式中。
        参数:
        regex - 要编译的表达式 
        抛出: 
        PatternSyntaxException - 如果表达式的语法无效

Matcher
    public boolean matches()尝试将整个区域与模式匹配。 
        如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。 
        返回:
        当且仅当整个区域序列匹配此匹配器的模式时才返回 true。   

    public boolean find()尝试查找与该模式匹配的输入序列的下一个子序列。 
        此方法从匹配器区域的开头开始,如果该方法的前一次调用成功了
           并且从那时开始匹配器没有被重置,则从以前匹配操作没有
           匹配的第一个字符开始。 
        如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。 
        返回:
        当且仅当输入序列的子序列匹配此匹配器的模式时才返回 true。

    public String group()返回由以前匹配操作所匹配的输入子序列。 
        对于具有输入序列 s 的匹配器 m,表达式 m.group() 
            和 s.substring(m.start(), m.end()) 是等效的。 
        注意,某些模式(例如,a*)匹配空字符串。
            当模式成功匹配输入中的空字符串时,此方法将返回空字符串。 
        指定者:接口 MatchResult 中的 group
        返回:
            以前匹配操作所匹配的字符串形式的子序列(可能为空)。 
        抛出: 
            IllegalStateException - 如果没有尝试任何匹配,
            或者以前的匹配操作失败。

     */

}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值