我在数据库表中有一个值,我希望按|
分割值为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]);
}
答案 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(" \\ |");
它可以正常使用