在Java中解析String的特定元素

时间:2011-09-22 16:32:30

标签: java

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

我有以下字符串:

(3:2,1) 

(3:null,1)

现在我想阅读Object1=3; Object2=2; Object3=1

Object1=3; Object2=null; Object3=1

我怎样才能用Java阅读。

4 个答案:

答案 0 :(得分: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];

如果您想要null而不是字符串"null",可以添加支票,如下所示:

Object object2 = s1[1].equals("null") ? null : s1[1];

并且如果需要,可以类似地将(解析)转换为整数:

Object object2 = s1[1].equals("null") ? null : new Integer(s1[1]);

答案 1 :(得分:1)

我通常不是正则表达式的忠实粉丝,但这是一个完美的例子,正则表达式的正确应用比其他基于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

答案 2 :(得分:0)

你可以用子字符串解析字符串 http://www.roseindia.net/help/java/s/java-substring.shtml

我认为你可以做object1 = string 但你真的会这样做 object1.variable = string

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

答案 3 :(得分:0)

String str = "3:2,1";
String str2 = "3:null,1";

// first case
Object[] objects = str.split(":|,");
System.out.println(Arrays.asList(objects));

// second case
Object[] objects2 = str2.split(":|,");
System.out.println(Arrays.asList(objects2));