Java格式化字符串以删除变量前面的 "0"

标签 java android achartengine

基本上,我在尝试格式化从数据库检索的字符串时遇到了一些问题。这是我的嵌套 for 循环:

for (int count = 0; count < monthStr.length; count++) {
        for (int i = 0; i < trans_list.size(); i++) {
            if (count == Integer.parseInt(trans_list.get(i).getDate())) {
                expensesSeries.add(x[count], trans_list.get(i)
                        .getAmount());
            } 
            else{
                expensesSeries.add(x[count], 0);
            }
        }
    }

基本上,getDate() 将返回以下格式的字符串:01,02,03,04 等等,直到 12。我想做的是将 1-12 的计数与我检索到的字符串进行比较。有没有办法去掉字符串中01,02前面的0?

提前致谢。

编辑

    boolean setZero = true;
    String[] monthStr = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
            "Aug", "Sep", "Oct", "Nov", "Dec" };

    // Creating an XYSeries for Expenses
    XYSeries expensesSeries = new XYSeries("Expenses");
    for (int count = 1; count < 13; count++) {
        for (int i = 0; i < trans_list.size(); i++) {
            if (count == Integer.parseInt(trans_list.get(i).getDate())) {
                setZero = false;
                expensesSeries.add(count, trans_list.get(i)
                        .getAmount());
            } 
            if(setZero)
            {
                expensesSeries.add(count, 0);
                setZero = true;
            }       
        }
    }

    for (int j = 0; j < monthStr.length; j++) {
        multiRenderer.addXTextLabel(j+1, monthStr[j]);
    }
}

enter image description here

最佳答案

Java格式化字符串以删除变量前面的“0”

ParseInt 应该能够从以 0 开头的 String 中获取 int(只要它位于 int 值之前),但是如果您需要它用于此代码中未显示的其他目的,只需使用起始字符 ^

执行正则表达式 replaceAll()
string.replaceAll("^0","");

对于多个 0,也使用 *

string.replaceAll("^0*","");

此处提到的具体问题

为什么要嵌套循环?看起来您希望通过 expensesSeriestrans_list 的内容添加为点,在没有数据的地方添加零。只需使用数组跟踪总数即可:-

 int[] monthlyTotals = new int[12];
 for (int i=0; i<trans_list.size(); i++)
 {
   //Add item at index i trans_list at location i in chart
   int chartXIndex =  Integer.parseInt(trans_list.get(i).getdate());
   monthlyTotals[chartXIndex] += trans_list.get(i).getAmount();
 }

您现在有一个数组来表示您想要在图表上显示的内容,因此只需循环将它们添加到图表中

for (int i=0; i<monthlyTotals.length; i++)
{
   expensesSeries.add(i, monthlyTotals[i]);
   multiRenderer.addXTextLabel(i+1, monthStr[i]); //combine your last loop as well
}

嵌套循环可能会令人困惑,请尽可能避免。

关于Java格式化字符串以删除变量前面的 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25624186/

相关文章:

android - Dagger2 androidTest 错误重复条目 : javax/annotation/Generated. 类

java - HTTP请求采样器数据的含义

java - 错误 "This element has no attached source and the Javadoc could not be found in the attached Javadoc."

android - 设备开机或解锁时启动应用程序

android - 禁用触摸 Achartengine

android - AChartEngine条形图的跨设备兼容性问题

android - AChartEngine日线图背景定制

java - 未触发dispatchPopulateAccessibilityEvent

java - 使用 Eclipse 远程调试 'eclipse RCP application"

java - eclipse 在我的项目旁边显示感叹号