I get a response from the server in this form

QID {#} QTEXT

• QID - unique identifier of the question • {#} - separator • QTEXT - question text

Sample issue

40386{#}Для каких баннеров проверяется скорость канала посетителя, и если скорость канала недостаточна, то баннер демонстрироваться не будет? 112077{#}Предельная скорость к потреблению - это: 37914{#}Скорость обращения денег - это... 7999{#}Скорость развития дилера характеризуется: 87914{#}Скорость химической реакции зависит: 17525{#}Предельная скорость передачи информации: 136880{#}Шина USB имеет скорость передачи данных: 46223{#}Как определить среднюю скорость абсолютного прироста? 97492{#}Вычеркните то, что не влияет на оптимальную скорость речи: 55833{#}Скорость смены нервных процессов характеризует 111409{#}Скорость истощения природных ресурсов оценивается: 132162{#}Скорость превращения активов в денежные средства: 123233{#}ДЕЙСТВИЯ, УВЕЛИЧИВАЮЩИЕ СКОРОСТЬ РАБОТЫ В MS WORD 

The question is this, if on Androide there are standard parsing methods, where, for example, a separator only needs to be specified, how to cut the IOS itself or with pens, if not difficult to give an example. Thanks in advance =)

  • I think we'll have to pick up files ... - like nothing complicated - Barmaley

2 answers 2

If the input data is sure, then everything is simple.

 import java.util.*; import java.lang.*; class Main { public static void main (String[] args) throws java.lang.Exception { String s = "40386{#}Для каких баннеров проверяется скорость канала посетителя, и если скорость канала недостаточна, то баннер демонстрироваться не будет?\n112077{#}Предельная скорость к потреблению - это:"; // видите \n - перевод строки String[] q = s.split("\n|\\{#\\}"); for (int i = 0; i < q.length; i++) { System.out.println(q[i]); } } } 

The conclusion will be such

 40386 Для каких баннеров проверяется скорость канала посетителя, и если скорость канала недостаточна, то баннер демонстрироваться не будет? 112077 Предельная скорость к потреблению - это: 

And this is very convenient for analysis. (you just need to make a cycle with an increment of 2, not one). If the input data can be "broken", then it should be done in two passes.

 import java.util.*; import java.lang.*; class Main { public static void main (String[] args) throws java.lang.Exception { String s = "40386{#}Для каких баннеров проверяется скорость канала посетителя, и если скорость канала недостаточна, то баннер демонстрироваться не будет?\n112077{#}Предельная скорость к потреблению - это:"; // видите \n - перевод строки String[] q = s.split("\n"); for (int i = 0; i < q.length; i++) { String[] d = q[i].split("\\{#\\}",2); if (d.length == 2) { System.out.println("key: " + d[0] + ", value: "+d[1]); } else { System.out.println("bad line"); } } } } 

Perhaps the second split could be done without a regular expression, but this is a separate optimization.

If the code comes already broken into lines (for example, read from a file), then the first split can be avoided.

    See the TextUtils class .