Как заменить ": abc, cde \ t" на "abc | cde", используя регулярные выражения в Java? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть список строк, как показано ниже: (без кавычек)

"<someother string without :>:abc\t<some other string without \t>"
"<someother string without :>:abc,cde\t<some other string without \t>"
"<someother string without :>:abc,efg,cde\t<some other string without \t>"
"<someother string without :>:abc,cde\t<some other string without \t>"

Хотел бы преобразовать их в:

"<someother string without :>|abc\t<some other string without \t>"
"<someother string without :>|abc|cde\t<some other string without \t>"
"<someother string without :>|abc|efg|cde\t<some other string without \t>"
"<someother string without :>|abc|cde\t<some other string without \t>"

Мне интересно, выполнимо ли это?

Спасибо

Ответы [ 3 ]

1 голос
/ 26 марта 2019

Попробуйте это:

public class T28Regex {
public static void main(String[] args) {
    String[] strings = { "<someother string without *>:abc\t<some other string without \t>",
            "<someother string without *>:abc,cde\t<some other string without \t>",
            "<someother string without *>:abc,efg,cde\t<some other string without \t>",
            "<someother string without *>:abc,cde\t<some other string without \t>" };

    for (String s : strings) {
        System.out.println(s.substring(0, s.indexOf(":")) + "|"
                + s.substring(s.indexOf(":") + 1, s.indexOf("\t", s.indexOf(":"))).replaceAll(",", "|")
                + s.substring(s.indexOf("\t", s.indexOf(":"))));
    }
}
}
1 голос
/ 27 марта 2019

Попробуйте это

function Replace_(str ) {
  var patt = /(:)((([\w]*(,)?)){2,})(\\t<)/gi;
  var res = str.replace(patt, function($1,$2,$3){
  return $1.replace(/,/g, "|").replace(":", "|");
  });
return res;
}

Check_W3Link

1 голос
/ 26 марта 2019

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

public static String convert(String s) {
    int start = s.indexOf(':') + 1;
    int end = s.indexOf('\t', start);

    return s.substring(0, start)
            + s.substring(start, end).replaceAll(",", "|")
            + s.substring(end, s.length());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...