Как заменить || (две трубы) из струны с | (одна) труба - PullRequest
2 голосов
/ 29 ноября 2011

Я получаю ответ для некоторых изображений в формате json в этом теге:

"xmlImageIds": "57948916 || 57948917 || 57948918 || 57948919 || 57948920 || 57948921 || 57948‌922 || 57948923 || 57948924 || 57948925 || 57948926 || 5794892 "

Что я хочу сделать, это отделить каждый идентификатор изображения с помощью .split (" || ") строкиучебный класс.Затем добавьте URL с этим идентификатором изображения и отобразите его.

Я пробовал .replace("\"|\"|","\"|");, но он не работает для меня.Пожалуйста, помогите.

РЕДАКТИРОВАТЬ: Shabbir, я пытался обновить ваш вопрос в соответствии с вашими комментариями ниже.Пожалуйста, отредактируйте его снова, если я не понял правильно.

Ответы [ 5 ]

14 голосов
/ 29 ноября 2011

Использование

.replace("||", "|");

| - это не специальный символ.

Однако, если вы используете split() или replaceAll вместо replace(), будьте осторожны, что вам нужноэкранировать символ канала как \\|, потому что эти методы принимают регулярное выражение в качестве параметра.

Например:

public static void main(String[] args) {
    String in = "\"xmlImageIds\":\"57948916||57948917||57948918||57948919||57948920||57948921||57948‌922||57948923||57948924||57948925||57948926||5794892\"".replace("||", "|");

    String[] q = in.split("\"");
    String[] ids = q[3].split("\\|");
    for (String id : ids) {
        System.out.println("http://test/" + id);
    }
}
3 голосов
/ 29 ноября 2011

Я думаю, я знаю, в чем твоя проблема. Вам нужно присвоить результат replace(), а не просто вызвать его.

String s = "foo||bar||baz";
s = s.replace("||", "|");
System.out.println(s);

Я проверил это, и просто вызов s.replace("||", "|");, похоже, не изменяет строку; Вы должны присвоить этот результат обратно s.

Edit: спецификация Java 6 гласит: " Возвращает новую строку , полученную в результате замены всех вхождений oldChar в этой строке на newChar." (акцент мой).

1 голос
/ 29 ноября 2011

Согласно http://docs.oracle.com/javase/6/docs/api/java/lang/String.html, replace() требуется char с вместо String с. Возможно, вам стоит попробовать replaceAll(String, String)? Либо так, либо попробуйте заменить кавычки String ("") на кавычки char ('').

Редактировать: Я только что заметил перегрузку для replace(), которая занимает CharSequence. Хотя я бы все же попробовал replaceAll().

0 голосов
/ 29 ноября 2011

я не помню, как работает этот метод ... но вы можете сделать свой собственный:

String withTwoPipes = "helloTwo||pipes";
   for(int i=0; i<withTwoPipes.lenght;i++){
      char a = withTwoPipes.charAt(i);
      if(a=='|' && i<withTwoPipes.lenght+1){
         char b = withTwoPipes.charAt(i+1);
         if(b=='|' && i<withTwoPipes.lenght){
           withTwoPipes.charAt(i)='';
           withTwoPipes.charAt(i+1)='|';
         }
      }
   }

Я думаю, что такой код должен работать ... это не идеальный ответ, но может помочь...

0 голосов
/ 29 ноября 2011
    String pipe="pipes||";
    System.out.println("Old Pipe:::"+pipe);
    System.out.println("Updated Pipe:::"+pipe.replace("||", "|"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...