Я хочу удалить части строки, если она заканчивается определенной строкой.
Примером может служить эта строка: "[email protected]"
И удалите @2x.png
чтобы он выглядел так: "am.sunrise.ios"
Как я могу проверить, содержит ли конец строки "@2x.png"
и удаляет ее?
Поскольку я пытался сделать это в ArrayList элементов, похожих на стиль, я закончил использовать следующий код:
for (int image = 0; image < IBImages.size(); image++) {
IBImages.set(image, IBImages.get(image).split("~")[0].split("@")[0].split(".png")[0]);
}
Если у меня есть список изображений с именами
[am.sunrise.ios.png, [email protected], [email protected], am.sunrise.ios~ipad.png, [email protected]]
Это позволяет мне разбить строку на две части. Например, "am.sunrise.ios ~ ipad.png" будет разделен на "am.sunrise.ios" и "~ ipad.png", если я разделился на "~". Я могу просто вернуть первую часть, ссылаясь на [0]. Поэтому я получаю то, что ищу в одной строке кода.
Обратите внимание, что изображение "am.sunrise.ios ~ ipad.png"
Вы можете проверить lastIndexOf
, и если он существует в строке, используйте substring
чтобы удалить ее:
String str = "[email protected]";
String search = "@2x.png";
int index = str.lastIndexOf(search);
if (index > 0) {
str = str.substring(0, index);
}
String.lastIndexOf
может найти подстроку в любом месте строки, а не только в конце. str.endsWith(suffix)
вы должны проверить str.endsWith(suffix)
, и затем вы можете str.endsWith(suffix)
вызов lastIndexOf
.
Предположим, что у вас есть строка, инициализированная как String file = "[email protected]";
,
if(file.endsWith("@2x.png"))
file = file.substr(0, file.indexOf("@2x.png"));
Метод endsWith(String)
возвращает логическое определение, если строка имеет определенный суффикс. В зависимости от этого вы можете заменить строку самой подстрокой между первым символом и перед индексом символа, который вы пытаетесь удалить.
lastIndexOf
.
Вы можете использовать String.split():
public static void main(String [] args){
String word = "[email protected]";
String[] parts = word.split("@");
if (parts.length == 2) {
System.out.println("looks like user@host...");
System.out.println("User: " + parts[0]);
System.out.println("Host: " + parts[1]);
}
}
Затем у вас есть массив строк, где первый элемент содержит часть перед "@", а второй элемент - часть после "@".
public static void main(String [] args){
String word = "[email protected]";
word = word.replace("@2x.png", "");
System.out.println(word);
}
"@[email protected]"
и это должно привести к "@2x.png"
not "", так как это повлияет на цель задающего.
Если вы хотите вообще удалить весь контент строки с @
до конца, вы можете использовать
yourString = yourString.replaceAll("@.*","");
где @.*
- регулярное выражение (выражение), представляющее подстроку, начинающуюся с @
и имеющую любой символ после него (представленный .
) ноль или более раз (представлен *
).
Если не будет части @xxx
ваша строка будет неизменной.
Если вы хотите изменить только эту конкретную подстроку @2x.png
(а не подставлять как @3x.png
), убедившись, что она помещена в конце строки, вы можете использовать
yourString = yourString.replaceAll("@2x\\.png$","");
где
$
представляет конец строки\\.
представляет .
буквальным (нам нужно, чтобы избежать его, так как было показано ранее .
метасимвол, представляющий любой символ)
substring
и методыendsWith
с классомString