我正在尝试用“\”分割字符串,但它对我不起作用,该字符串包含字母数字数据和一些日语字符..
这是我正在尝试的代码
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)
答案 0 :(得分:11)
由于反斜杠在 regex 中有特殊含义,你必须将它转义两次:
String[] parts = filesList.split("\\\\");
这是因为Java将字符串文字\\
解释为\
。您可以轻松地看到执行此代码:
String s = "123\\";
System.out.println(s); // Output: 123\
答案 1 :(得分:2)
我相信你需要做4个反斜杠,你试图代表的2个中的每一个都需要被转义。
String[] arrA = str.split("\\\\");
答案 2 :(得分:1)
filesList.split("\\");
应该是
filesList.split("\\\\");
答案 3 :(得分:0)
下面会为您提供文件名
int idx = filesList.replaceAll("\\", "/").lastIndexOf("/");
String fileNameWithExtn = idx >= 0 ? filesList.substring(idx + 1) : fileName;
删除文件扩展名并仅获取文件路径,类似地
idx = fileNameWithExtn .lastIndexOf(".");
String filename = idx >= 0 ? fileNameWithExtn.substring(0,idx) : fileNameWithExtn ;
答案 4 :(得分:0)
尝试使用模式,
String[] input = { "320/10.50/Dec 11 2002/39.95",
"110-4.25-Dec 15 2002-39.95",
"8%54.00%Dec 4 2002%0" };
public SplitData() {
for (int i = 0; i < input.length; i++) {
String[] piece = input[i].split("[-/%]");
for (int j = 0; j < piece.length; j++)
System.out.print(piece[j] + "\t");
System.out.print("\n");
}
答案 5 :(得分:0)
如果你想只替换一个标准反斜杠,试试这个。
String url = "http://192.168.1.5:8080\smth";
if (url .contains("\\")){
url = url .replaceAll("\\\\", "/");
}