我有两种类型的字符串
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
我收到错误,因为没有第三个|
答案 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的不同部分。