split数组后只给出第一个字符

时间:2016-11-16 08:13:36

标签: android arrays

我在数据库表中有一个值,我希望按|分割值为Company|company.pdf|images.pdf。当我运行以下代码时,它只返回Debug中的C

我做错了什么?

        String cname = null;
        String cpdf = null;
        String cimages = null;
        String catGetGeneralNameSQL = "SELECT * FROM categorymeta WHERE key = 'category_general' AND company = " + dashboard_company_id;
        Cursor catGetGeneralNameQuery = myDB.rawQuery(catGetGeneralNameSQL, null);
        while(catGetGeneralNameQuery.moveToNext()){
            String name = catGetGeneralNameQuery.getString(catGetGeneralNameQuery.getColumnIndex("value"));
            String[] separated = name.split("|");
            Log.d("LOG", separated[1]);
        }

3 个答案:

答案 0 :(得分:1)

这是因为split()方法将正则表达式作为参数,而|是regexp中的保留字符。

尝试使用:\\|来逃避它。

public static void main(String[] args) {
  String test = "Company|company.pdf|images.pdf";
  String[] result = test.split("\\|");
  System.out.println(result[1]);
}

输出:

company.pdf

请参阅split()方法文档:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

管道(没有被转义)在正则表达式中用于分隔备用匹配模式,例如:aaa|bbb将匹配“aaa”或“bbb”,这就是为什么它在未转义时匹配每个字符的原因。 / p>

希望它有所帮助。

答案 1 :(得分:1)

你需要逃避原来的特殊字符:

String[] separated = name.split("\\|");

答案 2 :(得分:0)

使用: String [] b = a.split(" \\ |");

它可以正常使用