Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提取字符串_Java - Fatal编程技术网

Java 如何提取字符串

Java 如何提取字符串,java,Java,我是Java编程新手。我想写一个简单的Java网络协议。 我想将此字符串发送到远程Java主机,例如: 230 computer delete reboot exit 我无法解决的问题是如何逐个提取字符串并将其放入数组中?对我来说最大的谜团是,如果我有不同长度的弦,我是如何做到这一点的? 谢谢你的帮助 PS:我可以直接发送整个数组而不仅仅是简单的字符串吗 PS 2:如果我有Java服务器和C客户端呢?就我们所知,只有字符串可以用来在双方之间交换数据 String input = "230 co

我是Java编程新手。我想写一个简单的Java网络协议。 我想将此字符串发送到远程Java主机,例如:

230 computer delete reboot exit
我无法解决的问题是如何逐个提取字符串并将其放入数组中?对我来说最大的谜团是,如果我有不同长度的弦,我是如何做到这一点的? 谢谢你的帮助

PS:我可以直接发送整个数组而不仅仅是简单的字符串吗

PS 2:如果我有Java服务器和C客户端呢?就我们所知,只有字符串可以用来在双方之间交换数据

String input = "230 computer delete reboot exit";
String s[] = input.split("\\s+");

// now s[0] = 230 s[1] = computer
阅读更多关于

这里使用的正则表达式
\\s+
等于任何空格。阅读了解更多信息

阅读更多关于

这里使用的正则表达式
\\s+
等于任何空格。阅读了解更多信息。

您可以:

  • 使用
    String.Split
    方法拆分字符串

    String text = "230 computer delete reboot exit";
    String[] split = text.split("\\s");
    
  • 使用
    模式
    匹配器

    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 s = new Scanner(text);
    int firstNumber = s.nextInt(); // 230
    String secondText = s.next(); // computer
    ....
    
  • 如果从流中读取内容,则第二个和第三个选择可能会更好

    或者其他方法……:)

    您可以:

  • 使用
    String.Split
    方法拆分字符串

    String text = "230 computer delete reboot exit";
    String[] split = text.split("\\s");
    
  • 使用
    模式
    匹配器

    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 s = new Scanner(text);
    int firstNumber = s.nextInt(); // 230
    String secondText = s.next(); // computer
    ....
    
  • 如果从流中读取内容,则第二个和第三个选择可能会更好


    或者其他方法……:)

    您可以通过和使用序列化直接发送数组

    但我建议您使用自己的类来封装消息。乙二醇

    class NetworkMessage {
      int code;
      String param1;
      String param2;
      ..
    }
    
    因此,它更加面向对象和结构化。仅发送字符串不是一个好的设计,尤其是当协议变得越来越复杂时


    关于拆分字符串,只需使用
    string.split(string regex)
    方法,但这不是一个好的解决方案。

    您可以通过和使用序列化直接发送数组

    但我建议您使用自己的类来封装消息。乙二醇

    class NetworkMessage {
      int code;
      String param1;
      String param2;
      ..
    }
    
    因此,它更加面向对象和结构化。仅发送字符串不是一个好的设计,尤其是当协议变得越来越复杂时


    关于拆分字符串,只需使用
    string.split(string regex)
    方法,但这不是一个好的解决方案。

    我不能说发送到远程Java主机,但可以使用
    .split()
    函数将字符串转换为数组<代码>“230计算机删除重新启动退出”。拆分(\\s+”将用空格将字符串拆分为5个元素的数组。您还不知道,但这不是您最大的问题…请分享您的经验好吗?如果要发送更复杂的数组,您必须决定如何序列化数据。寻找一些替代方法。我不能说发送到远程Java主机,但可以使用
    .split()
    函数将字符串转换为数组<代码>“230计算机删除重新启动退出”。拆分(\\s+”将用空格将字符串拆分为5个元素的数组。您还不知道,但这不是您最大的问题…请分享您的经验好吗?如果要发送更复杂的数组,您必须决定如何序列化数据。还有一个问题:如果我想连接Java服务器和C客户机,交换数据的最可选方式是什么?字符串?定义二进制或文本协议。在您的例子中,您可以从字符串开始,就像您在问题中定义的一样。还有一个问题:如果我想连接Java服务器和C客户端,最可选的数据交换方式是什么?字符串?定义二进制或文本协议。在您的情况下,您可以从字符串开始,就像您在问题中定义的那样。