我想从字符串表达式中读取Object。例如:
我有以下字符串:
(3:2,1)
或
(3:null,1)
现在我想阅读Object1=3; Object2=2; Object3=1
或
Object1=3; Object2=null; Object3=1
。
我怎样才能用Java阅读。
答案 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));