2015-07-29 4 views
1

Я пытаюсь разделить ниже строки на основе обратной косой черты «\», но не смог этого добиться для mar\12\2013как разбить строку на основе разделитель как «»

String s1 = "mar\12\2013"; 
String[] s =s1.split("\\\\"); 
for(String s2 : s){ 
    System.out.println(s2); 
} 
+6

Вам нужно будет определить 'String' как' mar \\ 12 \\ 2013', прежде чем он сработает, но в противном случае ваш код отлично подходит для меня – MadProgrammer

+4

Возможный дубликат [Как разбить строку java на обратную косую черту] (http://stackoverflow.com/questions/23751618/how-to-split-a-java-string-at-backslash) –

+0

Внутреннее представление вашей строки - 'mar \ n3'. В этом нет обратной косой черты. – Jens

ответ

1

В Java "mar\12\2013" является недопустимой строкой.

Чтобы использовать mar\12\2013 на Java, вам необходимо "mar\\12\\2013".

Если вы принимаете данные от пользователя как "mar\12\2013", то также вы должны разделить его на \\\\.

Причина:.split() принимает regex в качестве параметра.

  • Чтобы указать \ в регулярном выражении, нам нужно \\, потому что \ является маскирующим в regex.
  • Кроме того, \ является символом эвакуации на Java, поэтому нам необходимо избегать как \\\, что и делает его \\\\.

    String s1= //take input from user     // "mar\12\2013" 
    String[]s=s1.split("\\\\"); 
    for(String s2:s) { 
        System.out.println(s2); 
    } 
    

Приведенный выше код будет работать так, как вы хотите.

См. Рабочий код here.

+0

Фактически я получаю данные в своей программе с одиночной обратной косой чертой «\» only.so, как я могу разбить эту. пожалуйста помоги. –

+0

'String [] s = s1.split (" \\\\ ");' также будет работать. –

+0

См. Мой обновленный ответ для объяснения –

0
String s1="mar\12\2013"; 
String[]s=s1.split("\\"); 
for(String s2:s){ 
    System.out.println(s2); 
} 

Вы удвоился селекторы , я не могу на самом деле испытать атм, но я считаю, что ему просто нужно 2, первый из них - второй.

0

Смотрите ниже код он работал отлично для меня

public class StringTest { 

     public static void main(String arg[]){ 
     String s1="mar\\12\\2013"; 
      String[]s=s1.split("\\"); 
      for(String s2:s){ 

       System.out.println(s2); 

      } 
     } 
    } 
+0

он отлично работает, если присутствуют две обратные косые черты. но моя строка содержит только обратную косую черту. –

+0

@Shrinivas Shukla уже упомянул о том, что проблема и как вы ее можете решить –

Смежные вопросы