用java分割字符串

时间:2014-01-26 14:15:12

标签: java regex string indexof

我有两种类型的字符串

command1|Destination-IP|DestinationPort
Command2|Destination-IP|DestinationPort|SourceIP|SourcePort|message

我试图拆分String来获取变量 我开始这样编码,但不确定这是最好的方式

public String dstIp="";
    public String dstPort="";
    public String srcIp="";
    public String scrPort="";
    public String message="";
    public String command="";

int first = sentence.indexOf ("|"); 


                if (first > 0)
                {

                    int second = sentence.indexOf("|", first + 1);
                    int third = sentence.indexOf("|", second + 1);

                 command = sentence.substring(0,first);
                 dstIp=    sentence.substring(first+1,second);
                 dstPort= sentence.substring(second+1,third);

我要继续这样吗?或者也许使用正则表达式? 如果字符串是

command1|Destination-IP|DestinationPort

我收到错误,因为没有第三个|

4 个答案:

答案 0 :(得分:5)

最好按管道符号拆分输入:

String[] tokens = sentence.split( "[|]" ); // or sentence.split( "\\|" )

然后选中tokens.length并相应地采取行动,检查代币数量。

答案 1 :(得分:5)

看一下String.split方法:

String line = "first|second|third";
String[] splitted = line.split("\\|");
for (String part: splitted) {
    System.out.println(part);
}

旁注:由于"|"字符在正则表达式syntax中具有特殊含义(基本上"|"表示OR),因此应该使用反斜杠。

实际上,查看未转义版本"first|second|third".split("|")的结果非常有趣。

正则表达式"|"将英语翻译为“空字符串或空字符串”,并匹配任何位置的字符串。 "first|second|third".split("|")返回一个长度为19的数组:{"", "f", "i", "r", ..., "d"}

答案 2 :(得分:0)

使用Java函数split()来管理您正在寻找的内容!

示例代码:

String test = "bla|blo|bli";
String[] result = test.split("\\|");

答案 3 :(得分:0)

split\\|一起用作参数。它返回一个String[],它将包含| -split String的不同部分。