para pegar esse endereço ip e essa porta, e jogar cada um deles em uma variável diferente. Dei uma olhada por ai e vi que tem a função Split, só que não sei bem como usá-la. Outra coisa que complicou é que essa string não é um valor fixo, o ip e a port também podem mudar.
Então ai até resolveria o problema se fosse uma string fixa, mas como eu disse, essa string pode mudar de acordo com o ambiente, então se no meio da string acrescentar mais qualquer coisa que tenha outra “/” no meio já iria quebrar o código e o resultado não ia ser o correto.
Como você viu tem muitas formas de fazer isso.
Mas o importante é você saber o escopo e fazer um parser.
exemplo
“service:jmx:rmi:///jndi/rmi://127.0.0.1:7001/jmxrmi”
[service|work]<:><///></> …
Bom, apenas para entender, a linha acima tem [service|work] , nesse caso o parser espera pela palavra service ou a palavra work , se for diferente podera’ apresentar um erro.
Entendido isso, já pode começar a brincar.
import java.util.StringTokenizer;
public class PartString {
public static void main(String[] args) {
String s = "service:jmx:rmi:///jndi/rmi://127.0.0.1:7001/jmxrmi";
// String s = "service:jmx:rmi:///jndi/rmi://www.salvejava.com.br:7001/jmxrmi";
System.out.println("Por substring");
int i = s.indexOf("jndi/rmi://");
String p = s.substring(i+11, s.length() );
String ip = p.substring(0, p.indexOf(":"));
String port = p.substring(p.indexOf(":")+1, p.indexOf("/"));
System.out.println("ip=" + ip + " port="+port);
System.out.println("\nPor StringTokenizer");
StringTokenizer st = new StringTokenizer(s, ":/");
while(st.hasMoreTokens()) {
String ss = st.nextToken();
if(ss.equals("jndi") ) {
String rmi = st.nextToken();
if(rmi.equals("rmi") ) {
String ipp = st.nextToken();
String porta = st.nextToken();
System.out.println( "ip=" + ipp );
System.out.println( "porta=" + porta );
break;
}
}
}
}
}