2013-04-24 3 views
0

У меня есть следующая строка, которую мне нужно разделить на "_Folder43\", чтобы получить только имя изображения во втором элементе массива.Как разбить эту строку

E:\generated\_Folder43\image4565.jpg 

До сих пор я следующий код

String[] tokens = imageLoc.split("_Folder43\"); //backslash escapes the double quotes! 
    imageLoc = tokens[1]; 
    System.out.println(imageLoc); 

Первая строка в коде выше, где проблема в том, что обратный слеш там экранирует двойные кавычки и, следовательно, не позволяет до конца строки.

Обязательный выход image4565.jpg

+2

Могу ли я узнать причину раскола. Мы можем получить имя файла, как показано ниже: imageLoc.substring (imageLoc.lastIndexOf ("\\") + 1, imageLoc.length()); – VKPRO

+0

Согласовано. Это может быть еще проще. Вам не нужен последний аргумент: 'imageLoc = imageLoc.substring (imageLoc.lastIndexOf (" \\ ") + 1);' –

+0

Грустная панда для этого в слое представления. –

ответ

0

Вам нужно бежать обратные слэши другой обратной косой черты: "_Folder43\\". Однако, поскольку String.split() принимает регулярное выражение, вам также необходимо избежать результирующей обратной косой черты в регулярном выражении: String[] tokens = imageLoc.split("_Folder43\\\\");

+0

Это сработало, спасибо – Sahil

+0

Нет проблем. Если вы еще этого не сделали, я бы рекомендовал рассмотреть предложение графа. Использование API файлов кажется гораздо лучшим решением для представленного кода. –

0

Вместо разделения используйте подстроку, как показано ниже.

 String imageLoc ="E:\\generated\\_Folder43\\image4565.jpg"; 

    imageLoc = imageLoc.substring(imageLoc.lastIndexOf("\\")+1,imageLoc.length()); 

    System.out.println(imageLoc); 

    or 

    String imageLoc ="E:/generated/_Folder43/image4565.jpg"; 

    imageLoc = imageLoc.substring(imageLoc.lastIndexOf("/")+1,imageLoc.length()); 
+1

'imageLoc.substring (imageLoc.lastIndexOf ("/") + 1);' короче, он будет включать весь текст до конца строки – Alex

3

Не используйте строковые операции для работы с файловыми путями.

Если вы используете Java 6 или старше, используйте File API вместо:

package com.example.file; 

import java.io.File; 

public class FileExample2 { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String path = "E:\\generated\\_Folder43\\image4565.jpg"; 
     File f = new File(path); 
     System.out.println(f.getName()); 
    } 
} 

Если вы используете Java 7 или новее, использовать Path API. К сожалению, у меня нет Java 7 удобно, чтобы проверить это, но я думаю, что бы что-то вроде этого (пожалуйста, поправьте меня, если есть ошибки):

public class PathExample { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String path = "E:\\generated\\_Folder43\\image4565.jpg"; 
     Path p = Paths.get(path); 
     System.out.println(p.getFileName().toString()); 
    } 
} 
Смежные вопросы