我是Java编程的新手。我想写简单的Java网络协议。 我想将此字符串发送到远程Java主机,例如:
230 computer delete reboot exit
我无法解决的问题是如何逐个提取字符串并将其放入数组中?对我来说最大的谜团是如果我有不同长度的弦乐,我该怎么做? 谢谢您的帮助!
PS:我可以直接发送整个数组而不仅仅是简单的字符串吗?
PS 2:如果我有Java服务器和C客户端怎么办?据了解,只有字符串可用于双方之间的数据交换?
答案 0 :(得分:5)
你可以:
使用String.split
方法
String text = "230 computer delete reboot exit";
String[] split = text.split("\\s");
使用Pattern
和Matcher
String text = "230 computer delete reboot exit";
Pattern p = Pattern.compile("(.*)\\s+(.*)\\s+(.*)\\s+(.*)\\s+(.*)");
Matcher m = p.matcher(text);
if (m.matches()) {
String first = m.group(1);
String second = m.group(2);
....
使用Scanner
类
Scanner s = new Scanner(text);
int firstNumber = s.nextInt(); // 230
String secondText = s.next(); // computer
....
如果从流中读取内容,第二个和第三个选择可能会更好。
或其他一些方法......:)
答案 1 :(得分:4)
String input = "230 computer delete reboot exit";
String s[] = input.split("\\s+");
// now s[0] = 230 s[1] = computer
详细了解String.split()。
此处使用的正则表达式\\s+
等于任何空格。请阅读this以获取更多信息。
答案 2 :(得分:3)
您可以通过ObectInputStream
和ObjectOutputStream
使用序列化直接发送数组。
但我建议您使用自己的类来封装消息。例如
class NetworkMessage {
int code;
String param1;
String param2;
..
}
因此它更面向对象和结构化。仅发送字符串不是一个好的设计,特别是如果协议的复杂性增加。
关于拆分字符串只需使用String.split(String regex)
方法,但这不是一个好的解决方案。