ArrayList <String>на Java, [€ 14, € 55, € 500] - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть список элементов webElement, хранящихся в ArrayList строках, как показано ниже:

ArrayList<String> prints out [€300, €34, €56]

Как мне удалить знак € ?.Я пробовал remove() и другой метод, но они не будут работать.Это ArrayList хотя.

Ответы [ 8 ]

0 голосов
/ 11 сентября 2018

Просмотрите свой прайс-лист и замените знак евро, например:

for (String price : prices) {
        price.replaceAll("^\\$", "");
    }
0 голосов
/ 10 сентября 2018

Попробуйте с помощью Java 8 stream api.

List<String> prices = Arrays.asList("€300", "€34", "€56");
prices = prices.stream().map(s -> s.substring(1)).collect(Collectors.toList());
System.out.println(prices); // [300, 34, 56]
0 голосов
/ 10 сентября 2018

Вы также можете использовать это регулярное выражение,

  List<String> myList = new ArrayList<String>();
  myList.add("$14");
  myList.add("$55");
  myList.add("$500");
  System.out.println(myList);
   for (int i = 0; i < myList.size(); i++) {
     myList.set(i, myList.get(i).replaceAll("^[^\\d]+", ""));
  }
  System.out.println(myList);

Демо

0 голосов
/ 10 сентября 2018

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

List<String> list = Arrays.asList("€14", "€55", "€500");
System.out.println(list);

List<String> trimmedList =
    list.
        stream().
        map(s -> s.startsWith("€") ? s.substring(1) : s).
        collect(Collectors.toList());

System.out.println(trimmedList);

Он печатает:

[€14, €55, €500]
[14, 55, 500]
0 голосов
/ 10 сентября 2018

вы можете использовать replaceAll("^\\$", "") на вашем ArrayList.

0 голосов
/ 10 сентября 2018

Код ниже работает согласно вашему требованию.

  List<String> myList = new ArrayList<String>();
  myList.add("#14");
  myList.add("#55");
  myList.add("#500");
  System.out.println(myList);
  for (int i = 0; i < myList.size(); i++) {
      myList.set(i,myList.get(i).substring(1));
  }
  System.out.println(myList);

Выход: [# 14, # 55, # 500] [14, 55, 500]

0 голосов
/ 10 сентября 2018

Просто переберите свой список и используйте String::replaceAll

    List<String> list = new ArrayList <String>();
    list.add("$123");
    list.add("$345");
    list.add("12345");

    for (String s : list) {
        System.out.println(s.replaceAll("^\\$", ""));
    }

Если вы хотите обновить значение в List, вы можете использовать List::set

0 голосов
/ 10 сентября 2018

Я бы перебрал элементы и просто обрезал первый символ (при условии, что знак евро есть в каждом)

List<String> myList = new ArrayList<>();
...
for (int i = 0; i < myList.size(); i++) {
    myList.set(i,myList.get(i).substring(1));
}

Альтернативное решение в том случае, если первый символ не всегда является символом евро.

List<String> myList = new ArrayList<>();
...
for (int i = 0; i < myList.size(); i++) {
    myList.set(i,myList.get(i).replace((char)8364,(char)0));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...