我正在尝试用“\”分割字符串,但对我不起作用,该字符串包含字母数字数据和一些日语字符。
这是我正在尝试的代码
String [] folder = null;
String [] files= null;
for (int i =0; i<listFile_Names.size();i++)
{
String filesList = listFile_Names.get(i);
filesList = filesList.substring(1);
Log.v("Fullpath",filesList );
try{
String[] parts = filesList.split("\\");
folder[i] = parts[0];
files[i] = parts[1];
}
catch(Exception e){
e.printStackTrace();
}
}
for(int j=0; j< folder.length; j++)
{
Log.v("Folders", folder[j].toString());
Log.v("Files", files[j].toString());
}
这是LogCat所说的
06-11 11:19:03.300: V/Fullpath(14600): A40-002(D155AX-8_DUAL仕様チェックシート)\sheet001.html
06-11 11:19:03.300: W/System.err(14600): java.util.regex.PatternSyntaxException: Unrecognized backslash escape sequence in pattern near index 1:
06-11 11:19:03.300: W/System.err(14600): \
06-11 11:19:03.300: W/System.err(14600): ^
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compileImpl(Native Method)
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compile(Pattern.java:400)
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.<init>(Pattern.java:383)
06-11 11:19:03.300: W/System.err(14600): at java.util.regex.Pattern.compile(Pattern.java:374)
06-11 11:19:03.300: W/System.err(14600): at java.lang.String.split(String.java:1842)
06-11 11:19:03.300: W/System.err(14600): at java.lang.String.split(String.java:1823)
06-11 11:19:03.300: W/System.err(14600): at jp.co.komatsu.android.xlez.webservice.AsynTaskGetUpdatedFiles.doInBackground(AsynTaskGetUpdatedFiles.java:202)
最佳答案
由于反斜杠在正则表达式中具有特殊含义,因此您必须对其进行两次转义:
String[] parts = filesList.split("\\\\");
这是因为Java将字符串文字
\\
解释为\
。您可以轻松地看到执行以下代码:String s = "123\\";
System.out.println(s); // Output: 123\