如何从字符串数组中提取键和值?

时间:2013-12-16 08:24:46

标签: java android arrays string

我正在做一个Android应用程序,我从图像中读取文本,我得到一个如下所示的输出字符串,

  

姓名:michael / nPHONE NO:771234521 / n电子邮箱:michael@gmai | ecn / n公司:   谷歌/ N

我想将它们作为字符串单独提取,并分配给变量,如

String Name =“michael”; String Phone =“771234521”;

我怎么能这样实现,这是我的一段代码,

input.setText(recognizedText);
String[] separated = recognizedText.split("/");
for (String s: separated)
{

}

5 个答案:

答案 0 :(得分:1)

public static void main(String... args) {
        String s = "NAME : michael /nPHONE NO: 771234521/n e-Mail: michael@gmai|.com /nCompany: Google/n";

        String[] str = s.split("/n");
            for(int i=0;i<str.length;i++)
             {
             str[i]=str[i].trim();
             }
        for (int k = 0; k < 4; k++) {
            System.out.println(str[k]);
    }
}

O / P:

NAME : michael 
PHONE NO: 771234521
e-Mail: michael@gmai|.com 
Company: Google

答案 1 :(得分:1)

我认为您希望将字段解析为Map,并且它们在换行符(\n)上分开。也许是这样 -

// Convert the string in to a Map<String, String>.
public static Map<String, String> toMap(String in) {
  // the return map.
  Map<String, String> map = new HashMap<String, String>();
  // a tokenizer on newline
  StringTokenizer st = new StringTokenizer(in, "\n");
  while (st.hasMoreTokens()) {      // while there are lines.
    String token = st.nextToken();  // get the line.
    String[] kv = token.split(":"); // split on colon.
    if (kv.length > 1) {            // check that there's a key and a
                                    // value.
      map.put(kv[0].trim(), kv[1].trim()); // add it to
                                           // the map.
    }
  }
  return map; // return the map.
}

public static void main(String[] args) {
  String str = "NAME : michael \nPHONE NO: 771234521\n"
      + " e-Mail: michael@gmai|.com \nCompany: Google\n";
  Map<String, String> map = toMap(str);
  System.out.println(map);
}

这在哪里输出 -

{NAME=michael, e-Mail=michael@gmai|.com, Company=Google, PHONE NO=771234521}

答案 2 :(得分:0)

您应该String Tokenizer使用delimeter

根据您的/ {{1}}

对字符串进行标记

答案 3 :(得分:0)

String src = "NAME : michael /nPHONE NO: 771234521/n e-Mail: michael@gmai|.com /nCompany: Google/n";
        String noLineSrc = src.replace("/n", ",");
        String[] couples = noLineSrc.split(",");
        Map<String, String> result = new HashMap<String, String>();
        for(String couple : couples) {
            String[] coupleValue = couple.split(":");
            result.put(coupleValue[0].trim(), coupleValue[1].trim());
        }

答案 4 :(得分:0)

密钥为:"NAME:", "PHONE NO:", "e-Mail:", and "Company:"

将字符串与split("/n")分开后,您可以str[i].contains("Name:")检查密钥。

该值出现在":"之后。因此,int pos = str[i].indexof(":") + 1将成为值的起始位置。

String value = str[i].substring(pos)为您提供价值。

然后value.trim()删除空格。