Добавить substring в метод

Рейтинг: -1Ответов: 1Опубликовано: 01.03.2023

Подскажите, как вложить эту логику:

public static void main(String[] args)
{
   String str = "[Blouse\n" + "S, Black]";

   String resultStr = str.substring(str.indexOf(str) + 1, str.indexOf("\n"));
   System.out.println(resultStr);

}

В этот метод:

public List<String> getSortingListItemName (){
        List<WebElement> listItemName = driver.findElements(ITEM_ON_WISHLIST_LINK);
        List<String> allListItemName = listItemName.stream().map(WebElement::getText).collect(Collectors.toList());
        return allListItemName;
    } 

Мне нужно ,применить "алгоритм" к каждой строке списка. Что бы бралось только одно название товара и ни чего лишнего

Ответы

▲ 0Принят

Если у вас известен формат каждой строки в списке "[<ItemName>\nLine2]" и нужно взять часть строки между символами [ и \n, можно определить где-нибудь отдельный утилитный метод:

// утилитный класс MyUtil
public static String getItemName(String item) {
    int bracketPos = item.indexOf('[') + 1;
    int newLinePos = item.indexOf('\n', bracketPos);
    if (newLinePos < 0) {  // если перевод строки не найден??
        // обработка аварийного случая
    }
    return item.substring(bracketPos, newLinePos);
}

И затем просто подставляете ссылку на данный метод в дополнительную операцию .map в методе getSortingListItemName, который можно/нужно переписать, чтобы убрать лишние промежуточные переменные:

public List<String> getSortingListItemName () {
    return driver.findElements(ITEM_ON_WISHLIST_LINK) // List<WebElement>
        .stream()                                     // Stream<WebElement>
        .map(WebElement::getText)                     // Stream<String>
        .map(MyUtil::getItemName)                     // Stream<String>
        .collect(Collectors.toList());                // List<String>
}