Как разделить строку на # * # * - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть String со следующим значением:

B/W 0-2 hours of bus start time#*#*B/W 2-9 hours of bus start time#*#*Above 9 hours of bus start time--0%#*#*50%#*#*90%

Как вы split() это на #*#*?Мне нужен вывод следующим образом:

B/W 0-2 hours of bus start time

B/W 2-9 hours of bus start time

Above 9 hours of bus start time

0%

50%

90%

Ответы [ 5 ]

0 голосов
/ 27 февраля 2019

String finalValue = "";Строка mystring = "Ч / Б 0-2 часа времени начала движения автобуса # * # Ч / Б 2-9 часов времени начала движения автобуса # # Свыше 9 часов времени запуска автобуса - 0% # # 50% # # * 90% ";

String[] splitSt1 = mystring.split("--");
String detailsString = splitSt1[0];
String percentageString = splitSt1[1];
String[] detailsSt1 = detailsString.split("#\\*#\\*");
String[] percentageSt2 = percentageString.split("#\\*#\\*");

if(detailsSt1.length == detailsSt1.length ){
    for(int i=0;i<=(detailsSt1.length-1);i++ )
    {
        finalValue = finalValue +"* "+ detailsSt1[i]+ "-->" + percentageSt2 [i] +"\n"+"\n";
        my_text_view_id.setText(finalValue);
    }

}

выход:

  • B/ W 0-2 часа времени запуска автобуса -> 0%
  • B / W 2-9 часов времени старта автобуса -> 50%
  • Более 9 часов времени старта автобуса-> 90%
0 голосов
/ 27 февраля 2019

Вы можете использовать одно чередование , соответствующее либо 1+ повторениям #*, либо совпадению --

(?:#\*)+|--

См. regex demo | Java-демо

Например:

String s = "B/W 0-2 hours of bus start time#*#*B/W 2-9 hours of bus start time#*#*Above 9 hours of bus start time--0%#*#*50%#*#*90%";
String[] parts = s.split("(?:#\\*)+|--");

for (String part : parts) {
    System.out.println(part);
}

Результат

B/W 0-2 hours of bus start time
B/W 2-9 hours of bus start time
Above 9 hours of bus start time
0%
50%
90%
0 голосов
/ 27 февраля 2019

Попробуйте следующее -

yourString.split = yourString.split.replace("*","");
yourString.split = yourString.split.replace("--","");
String[] pickList = yourString.split("##");
0 голосов
/ 27 февраля 2019

Ваша строка должна содержать те же разделители.Если у вас есть разные разделители, вам нужно предсказать, какие разделители могут быть там, и передать эти разделители в качестве аргументов функции split (), разделенной |sign.

Например, чтобы использовать символы # и * в качестве разделителей, вы должны написать так: stringvariable.split ("\ # | \ *");

0 голосов
/ 27 февраля 2019

Разделите вашу строку следующим образом:

  String mStr = "B/W 0-2 hours of bus start time#*#B/W 2-9 hours of bus start time##Above 9 hours of bus start time--0%##50%##*90%";
        Log.e("mStr==", "===" + mStr);

        String[] pickList = mStr.split("#\\*#|##|--|##\\*|\\*");

        Log.e("pickList==", "===" + pickList.length);

        for (int i = 0; i < pickList.length; i++) {
            Log.e("pickList==", "===" + pickList[i]);
        }

Внутри pickList вы получите свой выходной список с разделенными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...