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

问题描述:

我想从字符串表达式中读取Object。例如:解析Java中字符串的特定元素

我有以下字符串:

(3:2,1) 

(3:null,1) 

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

Object1=3; Object2=null; Object3=1

如何在Java中读取它。

+3

什么是/应该是这些对象的类型?你有没有'Object1','Object2'等? – NullUserException

+0

根据您提供的字符串,使用ArrayList ,解析您的字符串,将每个标记转换为Integer并将其添加到arraylist中。 –

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

也许,这就是你想要什么:

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]); 
+2

这不会消除括号。 – NullUserException

+0

好抓!更新... – Saket

你可以解析st环与子 http://www.roseindia.net/help/java/s/java-substring.shtml

我会觉得你可以做object1 =字符串 但真的是你通常会做 object1.variable =字符串

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

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));