Удалить регулярное выражение из массива строк - PullRequest
0 голосов
/ 09 декабря 2011

Мне нужно удалить ';' из массива строк. Любые решения?

То, что я делал в своем классе, - это извлечение длинного куска строки, соединенного без пробелов

(thisisalongpieceofstringtobeseparated)

Я разделил их, вставив между ними ';'

(это; есть; а; долго, кусок, из; строк; с; быть; разделено;)

Затем я использовал .split(";"), чтобы добавить их в массив. Все успешно, но последний индекс, который имеет ';'.

this 

is 

a 

long 

piece 

of 

string 

to 

be 

separated; 


Нужно удалить последние ;

По запросу, код ниже.

 while (line != null) {

            if(line.contains("../../"))
            {

                int startIndex = line.indexOf("../../") + 6;
                int endIndex = line.indexOf(">", startIndex + 1);
                String abc = "http://www.google.com/";
                String imageSrc = line.substring(startIndex,endIndex);

                //complete full url
                String xyz = abc +imageSrc;
                xyz = xyz.substring(0,xyz.indexOf('"'));
                xyz = xyz +";";
                content += xyz;
                            mStrings = content.split(";");

Ответы [ 4 ]

2 голосов
/ 09 декабря 2011
    String str="This; is; my; test;";
    String[] strArr=str.split(";");
    for(int i=0;i<strArr.length;i++)
    {
        System.out.println("Str:::"+strArr[i]);
     // add strArr[i] to an array or go through Arrays.toString()
    }

Ничего особенного в коде, я имею в виду, что если вы используете spilled (), тогда это уже работает для вас, если нет, то с вашим кодом что-то не так, опубликуйте код, чтобы увидеть, что именно не так с вашим кодом, или сделайте таким образом

2 голосов
/ 09 декабря 2011

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

public static void main(String[] args) {
    System.out.println(Arrays.toString("a;b;c;".split(";")));
}

Вывод:

[a, b, c]

«Ответ» - ничего не делать!Это уже должно работать!

1 голос
/ 09 декабря 2011

Решение Микеля - намного меньше работы, но вы также можете использовать StringTokenizer и указать returnDelims как false.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html

1 голос
/ 09 декабря 2011

Не будет ли проще просто удалить окончательный ; из строки перед ее разбиением? То есть удалите последний символ (при условии, что он всегда будет ;):

var newStr = str.substring(0, str.length-1);

А затем вместо этого разбить на эту строку.

...