Dream_1
Dream_1
2012-08-09 14:08

截取字符串,从后往前截

已采纳

从后往前截 第一个出现非0的字符为止

比如:string str = "440103000000" 我想得到 “440103”

怎么实现呀

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

12条回答

  • lzl836 lzl836 9年前

    [code="java"]
    String str = "440103000000";

    System.out.print(str.replaceAll("0*$", ""));
    [/code]

    点赞 评论 复制链接分享
  • M44346460 M44346460 9年前

    从后往前搜索!

    点赞 评论 复制链接分享
  • iteye_6445 iteye_6445 9年前

    int len = str.length();

    for(int i = len - 1; i > 0; i--) {
    char c = str.charAt(i);
    if(c != '0') {
    str.substring(0, i + 1);
    break;
    }
    }

    点赞 评论 复制链接分享
  • zhouyingbo 奇美信软件 9年前

    之前没有看清题意,不好意思。
    可以使用apache commons-lang包提供的StringUtils.stripEnd()方法,示例:
    [code="java"]
    import org.apache.commons.lang.StringUtils;

    public class MainTest {

    public static void main(String[] args) {
        String str = "00111220000";
        System.out.println(StringUtils.stripEnd(str, "0"));
        //output: 0011122
    }
    

    }
    [/code]
    对应的sourcecode:
    [code="java"]
    public static String stripEnd(String str, String stripChars) {
    if (str == null) {
    return null;
    }
    int end = str.length();
    if (end == 0) {
    return str;
    }
    if (stripChars == null) {
    while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) {
    end--;
    }
    } else if (stripChars.length() == 0) {
    return str;
    } else {
    while ((end != 0) && (stripChars.indexOf(str.charAt(end - 1)) != -1)) {
    end--;
    }
    }
    return str.substring(0, end);
    }
    [/code]

    点赞 评论 复制链接分享
  • njtvwoshiisp njtvwoshiisp 9年前

    用substring(x,x)的方法进行 参考API

    点赞 评论 复制链接分享
  • kjkjb kjkjb 9年前

    不考虑效率可以这么做
    String str = "440103000000";
    while(str.endsWith("0")){
    str = str.substring(0,str.length()-1);
    }

    点赞 评论 复制链接分享
  • zhouyingbo 奇美信软件 9年前

    使用apache commons-lang包提供的StringUtils.strip()方法,示例:
    [code="java"]
    import org.apache.commons.lang.StringUtils;

    public class TestMain {

    public static void main(String[] args) {
        String str = "011110023340000";
        System.out.println(StringUtils.strip(str,  "0"));
                // output: 1111002334
    }
    

    }
    [/code]

    点赞 评论 复制链接分享
  • at1943 at1943 9年前

    用common的stringUtils的一个方法就可以,名字忘了,提示一下看看

    点赞 评论 复制链接分享
  • fang_fumin fang_fumin 9年前

    还可以使用正则表达式取出0前面的数据
    String str = "0000321803210321300000123120032100030110000";
    String regex = "([1-9]*0*[1-9]+)+";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);
    boolean found = false;
    while (matcher.find())
    {
    System.out.printf(
    "I found the text \"%s\" starting at index %d and ending at index %d.%n",
    matcher.group(), matcher.start(), matcher.end());
    found = true;
    }
    if (!found)
    {
    System.out.printf("No match found.%n");
    }

    点赞 评论 复制链接分享
  • iteye_11976 iteye_11976 9年前

    字符串转化成Char数组,从尾部开始遍历,将0到index的字符Copy到Str中。

    点赞 评论 复制链接分享
  • ll89308839 ll89308839 9年前

    [code="java"]
    String str = "32180321032130123120032100030110000";
    for(int i=str.length()-1;i>=0;i--){
    if( str.charAt(i) !='0'){
    str = str.substring(0,i+1);
    break;
    }
    }
    [/code]

    点赞 评论 复制链接分享
  • Peter1303 Peter1303 5年前

    看了一下回复,我觉得这个比较简单:String newString = string.substring(0,str.length()-6);减去后6位String

    点赞 评论 复制链接分享

相关推荐