如果字符串包含单词,如何将字符串转换为int / Integer?

时间:2015-03-31 15:14:39

标签: java android parseint

基本上我想将字符串单词转换为int,如xml,但现在从原始文件转换。 我可以从xml:

这样做
final int[] colorArray = getResources().getIntArray(R.array.colors_int);

我在xml文件中有这个:

<integer-array name="colors_int">
            <item>@color/red</item>
            <item>@color/yellow</item>
            <item>@color/blue</item>
   </integer-array>

通过这个我可以轻松地在我的对象上设置颜色:

view.setBackgroundColor(colorArray[i]);

但是现在我有一个原始文件,其中包含用空格分隔的颜色名称:&#34;蓝红黄&#34;

如何将这些读入int数组/ Integer arraylist中,这样我可以轻松地为对象着色? 我试过这个:

input_file_int.add( Integer.parseInt(line));

但它没有用,因为字符串不是int。

 java.lang.NumberFormatException: Invalid int: "blue"

使用字符串arraylist,它完美地工作但我不能使用字符串来为对象着色。

我怎么能这样做?

修改

我有这个示例原始文件:

black
gray
silver
maroon
red
olive

我的colors.xml:

<?xml version="1.0" encoding="utf-8"?>
    <resources xmlns:android="http://schemas.android.com/apk/res/android">
        <!--16 basic color -->
        <color name="black">#000000</color>
        <color name="gray">#808080</color>
        <color name="silver">#C0C0C0</color>
        <color name="white">#FFFFFF</color>
        <color name="maroon">#800000</color>
    </resources>

这就是我如何初始化Integer ArrayList:

ArrayList<Integer> input_file_int= new ArrayList<Integer>();

2 个答案:

答案 0 :(得分:0)

您可以创建Map种颜色:

Map<String, Integer> colors = new HashMap<String, Integer>();
colors.put("blue", 0xff00ff00);

input_file_int.add(colors.get("blue"));

编辑: 如果您正在尝试查找xml上列出的颜色,您可以这样做:

Resources resources = getResources();
int colorId =  resources.getIdentifier(line, "color", "com.mypackage.myapplication");
int color = resources.getColor(colorId);
input_file_int.add(color);

答案 1 :(得分:0)

// Your arraylist
ArrayList<Integer> input_file_int = new ArrayList<Integer>();

// Read raw file
Scanner scanner = new Scanner(getResources().openRawResource(
        R.raw.colors));
try {
    while (scanner.hasNext()) {
        switch (scanner.next()) {
        // include case of your all 16 (or any number of) colors of your
        // colors.xml file
        case "black":
            input_file_int.add(Integer.parseInt(getResources()
                    .getString(R.color.black).substring(3), 16));
            break;
        case "gray":
            input_file_int.add(Integer.parseInt(getResources()
                    .getString(R.color.gray).substring(3), 16));
            break;
        case "silver":
            input_file_int.add(Integer.parseInt(getResources()
                    .getString(R.color.silver).substring(3), 16));
            break;
        // and keep going on
        default:
            break;
        }
    }
} catch (Exception e) {
    Log.e(getTitle().toString(), e.getMessage());
} finally {
    scanner.close();
}
// Now, Arraylist contains true Integer value of colors
// Be aware you can't directly use it.
// Use it like this...

view.setBackgroundColor(0xff000000 + input_file_int.get(2));
// Silver in this case