То есть вы хотите удалить все до первой косой черты, а затем заменить любые подчеркивания в оставшейся части пробелами? Это довольно легко, используя indexOf
, substring
и replace
(о которых вы уже знаете).
Вы, конечно, могли бы сделать это с помощью регулярных выражений, как предложено Mr_Spock, но лично для всего лишь пары операций я бы придерживался обычных строковых методов:
int slash = text.indexOf('/');
text = text.substring(slash + 1).replace("_", " ");
Итак, для полного примера:
import java.util.TimeZone;
public class Test {
public static void main(String[] args) {
String[] ids = TimeZone.getAvailableIDs();
for (String id : ids) {
int slash = id.indexOf('/');
String stripped = id.substring(slash + 1).replace("_", " ");
System.out.println(stripped);
}
}
}
Обратите внимание, что это все еще оставляет вас с некоторыми интересными именами, такими как "Северная Дакота / Beulah", так как у оригинального идентификатора было две косые черты.
Просто для полноты, другой способ обработки косой черты состоит в том, чтобы разбить строку на косой черте, а затем взять вторую часть - но, как показывает приведенный выше пример, вы, вероятно, захотите убедиться, что она разбивается на не более две части, сохраняя «Северная Дакота / Беула» как один жетон. Вы также должны быть осторожны в случае, если были какие-либо идентификаторы без косых черт any (приведенный выше код отлично работает, так как indexOf
вернет -1, поэтому подстрока станет неактивной).