在Java中过滤掉符号行输入的符号

时间:2015-09-23 04:43:09

标签: java string command-line c-strings

我正在使用Java中的一个简单方法,我从输入中获取单个字符串,例如:     username@192.168.1.1:2531

我需要将用户名 ip地址/主机端口分成三个不同的字符串。我目前的想法是将整个输入转换为char [],通过循环标记' @' ' :' 占据。然后使用偏移构造函数为新的String构造用户名,ip / host和port的每个单独的字符串。

这是我的代码:

import java.io.*;

public class StringSymbolParse {
public static void main(String[] args){
    String uname; 
    String host;
    int port;   //uname@ip:host

    String total = args[0];
    System.out.println("Input: " + args[0]);
    char totalChar[] = total.toCharArray();
    int size = totalChar.length;

    int markerAt = 0; //marks last filtered symbol placement;
    int markerColon = 0;
    for(int i=0; i<size; i++){
        if((totalChar[i] == '@')){
            markerAt = i;
        }
        else if(totalChar[i] == ':'){
            markerColon = i;                
        }
    }
    System.out.println("MarkerAT: " + markerAt);
    System.out.println("MarkerColon: " + markerColon);
    uname = new String(totalChar,0,(markerAt));
    System.out.println("Username: " + uname);
    host = new String(totalChar, 8, );
    port = Integer.parseInt(new String(totalChar, (markerColon),  size));


    System.out.println("Username: " + uname);
    System.out.println("Host: " + host);
    System.out.println("Port: " + port);
   }
}

`

3 个答案:

答案 0 :(得分:3)

您可以使用String类的split方法

        String s = "username@192.168.1.1:2531";
        String[] arr = s.split("@|:");
        for (String str : arr) {
            System.out.println(str);
        }

答案 1 :(得分:2)

对于类似的事情,regular expression是你的朋友。

String text = "username@192.168.1.1:2531";

Matcher m = Pattern.compile("([^@]*)@([^:@]*):(.*)").matcher(text);
if (m.matches()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
    System.out.println(m.group(3));
}

输出

username
192.168.1.1
2531

答案 2 :(得分:1)

您可以使用String.split()方法。

String s = "username@192.168.1.1:2531";
String[] arr = s.split("@");
String username = arr[0];
String ipAdd = arr[1].split(":")[0];
String port = arr[1].split(":")[1];
System.out.println("Username : " + username);
System.out.println("IP address : " + ipAdd);
System.out.println("Port : " + port);

<强>输出:

Username : username
IP address : 192.168.1.1
Port : 2531