Java 使用多个字母和字母拆分字符串-android

Java 使用多个字母和字母拆分字符串-android,java,android,Java,Android,android java非常新,我有一个简单的问题。我有字符串例如: P:38,AS:31,DT:231,AR:21 我想将其拆分为4个不同的列表: P(list) = 38 AS(list) = 31 DT(list) = 231 AR(list) = 21 我尝试过拆分,但它没有完成任务…只要键始终是字母,值始终是整数,就可以使用正则表达式解析这些字符串: Hashtable<String, int[]> result = new Hashtable<String,

android java非常新,我有一个简单的问题。我有字符串例如:

P:38,AS:31,DT:231,AR:21
我想将其拆分为4个不同的列表:

P(list)  = 38
AS(list) = 31
DT(list) = 231
AR(list) = 21

我尝试过拆分,但它没有完成任务…

只要键始终是字母,值始终是整数,就可以使用正则表达式解析这些字符串:

Hashtable<String, int[]> result = new Hashtable<String, int[]>();
Pattern pattern = Pattern.compile("([A-Z]+):(\\d+(?:,\\d+)*)");
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    String key = matcher.group(1);
    String[] fields = matcher.group(2).split(",");

    int[] values = new int[fields.length];
    for (int i=0; i<values.length; i++)
        values[i] = Integer.parseInt(fields[i]);

    result.put(key, values);
}
Hashtable结果=新的Hashtable();
Pattern=Pattern.compile(([A-Z]+):(\\d+(?:,\\d+*));
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find()){
字符串键=matcher.group(1);
String[]fields=matcher.group(2).split(“,”);
int[]值=新的int[fields.length];

对于(int i=0;i,只要键始终是字母,值始终是整数,就可以使用正则表达式解析这些字符串:

Hashtable<String, int[]> result = new Hashtable<String, int[]>();
Pattern pattern = Pattern.compile("([A-Z]+):(\\d+(?:,\\d+)*)");
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    String key = matcher.group(1);
    String[] fields = matcher.group(2).split(",");

    int[] values = new int[fields.length];
    for (int i=0; i<values.length; i++)
        values[i] = Integer.parseInt(fields[i]);

    result.put(key, values);
}
Hashtable结果=新的Hashtable();
Pattern=Pattern.compile(([A-Z]+):(\\d+(?:,\\d+*));
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find()){
字符串键=matcher.group(1);
String[]fields=matcher.group(2).split(“,”);
int[]值=新的int[fields.length];

对于@pobybolek所说的(int i=0;i),可以使用他编写的方法将字符串转换为哈希表,哈希表使用键,然后使用键后面的int值。int值存储在数组中,键是字符串

                        String input = master_string;
                        Hashtable<String, int[]> result = new Hashtable<String, int[]>();
                        Pattern pattern = Pattern.compile("([A-Z]+):(\\d+(?:,\\d+)*)");
                        Matcher matcher = pattern.matcher(input);

                        while (matcher.find())
                        {
                            String key = matcher.group(1);
                            String[] fields = matcher.group(2).split(",");

                            int[] values = new int[fields.length];
                            for (int pqr=0; pqr<values.length; pqr++)
                            {
                                values[pqr] = Integer.parseInt(fields[pqr]);
                                // values[pqr] = fields[pqr];
                            }
                            result.put(key, values);
                        }
字符串输入=主字符串;
Hashtable result=新的Hashtable();
Pattern=Pattern.compile(([A-Z]+):(\\d+(?:,\\d+*));
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find())
{
字符串键=matcher.group(1);
String[]fields=matcher.group(2).split(“,”);
int[]值=新的int[fields.length];

对于@pobybolek所说的(int pqr=0;pqr),可以使用他编写的方法将字符串转换为哈希表,哈希表使用键,然后使用键后面的int值。int值存储在数组中,键是字符串

                        String input = master_string;
                        Hashtable<String, int[]> result = new Hashtable<String, int[]>();
                        Pattern pattern = Pattern.compile("([A-Z]+):(\\d+(?:,\\d+)*)");
                        Matcher matcher = pattern.matcher(input);

                        while (matcher.find())
                        {
                            String key = matcher.group(1);
                            String[] fields = matcher.group(2).split(",");

                            int[] values = new int[fields.length];
                            for (int pqr=0; pqr<values.length; pqr++)
                            {
                                values[pqr] = Integer.parseInt(fields[pqr]);
                                // values[pqr] = fields[pqr];
                            }
                            result.put(key, values);
                        }
字符串输入=主字符串;
Hashtable result=新的Hashtable();
Pattern=Pattern.compile(([A-Z]+):(\\d+(?:,\\d+*));
Matcher Matcher=pattern.Matcher(输入);
while(matcher.find())
{
字符串键=matcher.group(1);
String[]fields=matcher.group(2).split(“,”);
int[]值=新的int[fields.length];


对于(int pqr=0;pqrWhy没有拆分完成任务?我对它给我的输出感到困惑,然后迷路了……它也不接受P或P:作为正则表达式idk为什么:/@PoByBolek我对java非常陌生,只是尝试简单的练习好的……你尝试过用逗号拆分然后分别处理每个条目吗?@PoByBolek这可能是个问题,我想知道如果有多个条目…例如,如果它的P:38,98,AS:34,22,那么它只会删除逗号,为什么不拆分来完成任务?我对它给我的输出感到困惑,然后迷路了…它也不接受P或P:AS regex idk为什么:/@PoByBolek我对java非常陌生,只是尝试简单的练习好的…你尝试过拆分吗按逗号排序,然后分别处理每个条目?@PoByBolek如果有多个条目,这可能是个问题……例如,如果它的P:38,98,AS:34,22,那么它只会删除逗号and@SaimMahmood如果这回答了你的问题,你能接受吗?我试过你的代码,但它给了我这样的答案…resu的答案它是{AS=[I@222f6e2f,DT=[I@291e6c3c,AR=[I@39568dc5,P=[I@346a931a}你知道这是什么吗?而且当我尝试使用键访问它们并在日志中标记结果时,我什么也没有得到…你看到的是整数数组的字符串表示形式。如果你想看到实际值,你必须单独打印它们,而不是像
System.out.println(result.get(“DT”))
为android执行此操作,这是我编写的…Log.i(“内部HOMF片断”,“结果中AR的结果值\n”+结果.get(“AR”).toString());仍然是空的增益,您看到的是整数数组的字符串表示形式,不幸的是,它没有显示其值。您必须执行如下操作:
int[]values=result.get(“DT”);for(int i=0;i@SaimMahmood如果这回答了你的问题,你能接受吗?我试过你的代码,但它给了我这样的答案…结果的答案是{AS}=[I@222f6e2f,DT=[I@291e6c3c,AR=[I@39568dc5,P=[I@346a931a}你知道这是什么吗?而且当我尝试使用键访问它们并在日志中标记结果时,我什么也没有得到…你看到的是整数数组的字符串表示形式。如果你想看到实际值,你必须单独打印它们,而不是像
System.out.println(result.get(“DT”))
为android执行此操作,这是我编写的…Log.i(“内部HOMF片断”,“结果中AR的结果值\n”+结果.get(“AR”).toString());仍然是空的增益,您看到的是整数数组的字符串表示形式,不幸的是,它没有显示其值。您必须执行如下操作:
int[]values=result.get(“DT”);for(int i=0;i