在Java中解析字符串的特定元素

在Java中解析字符串的特定元素,java,Java,我想从字符串表达式中读取对象。例如: 我有以下字符串: (3:2,1) 或 现在我想读Object1=3;对象2=2;Object3=1或 Object1=3;Object2=null;Object3=1 我怎样才能用Java阅读它。也许,这就是你想要的: String s[] = inputString.substring(1, inputString.length() - 2)split(","); // inputString is your string expression Obj

我想从字符串表达式中读取对象。例如:

我有以下字符串:

(3:2,1) 

现在我想读
Object1=3;对象2=2;Object3=1

Object1=3;Object2=null;Object3=1


我怎样才能用Java阅读它。

也许,这就是你想要的:

String s[] = inputString.substring(1, inputString.length() - 2)split(","); // inputString is your string expression
Object object3 = s[1]; 
String s1[] = s[0].split(":");
Object object1 = s1[0];
Object object2 = s1[1];
Object object2 = s1[1].equals("null") ? null : new Integer(s1[1]);
如果您想要
null
而不是字符串
“null”
,可以添加如下检查:

Object object2 = s1[1].equals("null") ? null : s1[1];
如果需要,也可以类似地将(解析)转换为整数:

String s[] = inputString.substring(1, inputString.length() - 2)split(","); // inputString is your string expression
Object object3 = s[1]; 
String s1[] = s[0].split(":");
Object object1 = s1[0];
Object object2 = s1[1];
Object object2 = s1[1].equals("null") ? null : new Integer(s1[1]);

可以使用子字符串分析字符串

我想你可以做object1=string 但实际上,你通常会这么做 object1.variable=string

否则它就不是“对象”
它是一个“字符串对象”

我通常不太喜欢正则表达式,但这是一个完美的例子,说明正则表达式的正确应用比其他基于字符串操作的解决方案更简单,更重要的是更易于维护

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

public class Parser
{
    public static void main(final String[] args)
    {
        final String s1 = "(3:2,1)";
        final String s2 = "(3:null,1)";
        final Pattern p = Pattern.compile("\\((\\d+):(\\d+|null),(\\d+)\\)");
        final Matcher m1 = p.matcher(s1);
        m1.matches();
        System.out.format("Object1=%s; Object2=%s; Object3=%s", m1.group(1), m1.group(2), m1.group(3));
        System.out.println();
        final Matcher m2 = p.matcher(s2);
        m2.matches();
        System.out.format("Object1=%s; Object2=%s; Object3=%s", m2.group(1), m2.group(2), m2.group(3));
    }
}
根据您的要求,预期输出如下所示

Object1=3; Object2=2; Object3=1
Object1=3; Object2=null; Object3=1

这些对象的类型是/应该是什么?您是否已经有了
Object1
Object2
,等等?根据您提供的字符串,使用ArrayList,解析字符串,将每个标记转换为整数并添加到ArrayList中。这不会去掉括号。