java - 搜索大字符串以查看是否存在无效的 "parameter"

标签 java string

我有一个大字符串,类似于这个:

BREW pot HTCPCP/1.0

Accept-Additions: #milk;3#whiskey;splash

Content-Length: 5

Content-Type: message/coffeepot

我还有一个包含多个添加项的数组(#whiskey、#espresso 等)。我需要做的是,如果这个大字符串包含不在可用添加项数组中的添加项,则发送错误。例如,如果字符串的“Accept-Additions”部分包含“#bricks;3”,则会产生错误,因为它不在数组中。

我将如何在 Java 中解决这个问题?尽管我已经编写了程序的其余部分(你们中的许多人可能认识到),但我在实现这部分时遇到了麻烦。我将如何编码以下问题,重点是添加不可用?

最佳答案

此代码对输入做出了一些假设。看起来您确实可以将每个标记进一步拆分为 #;成分。使用列表作为可接受的液体参数可以稍微清理代码(只需使用liquids.contains(String s))

  static String[] liquids = {"#milk;3", "#whiskey;splash"};

  public static void parseString(String input)
  {
    // Break the String down into line-by-line.
    String[] lines = input.split("" + '\n');
    for (int line_index = 0; line_index < lines.length; line_index++)
    {
      if (lines[line_index].length() > 16)
      {
        // Assume you're delimiting by '#'
        String[] tokens = lines[line_index].split("#");
        if (tokens.length > 1)
        {
          // Start at index = 1 to kill "Accept-Additions:"
          for (int token_index = 1; token_index < tokens.length; token_index++)
          {
            boolean valid = false;
            for (int liquids_index = 0; liquids_index < liquids.length; liquids_index++)
            {
              if (liquids[liquids_index].equals("#" + tokens[token_index]))
              {
                valid = true;
                // break to save some time if liquids is very long
                break;
              }
            }
            if (!valid)
            {
              throwError("#" + tokens[token_index]);
            }
          }
        }
      }
    }
  }

  public static void throwError(String error)
  {
    System.out.println(error + " is not in the Array!");
  }

关于java - 搜索大字符串以查看是否存在无效的 "parameter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827446/

相关文章:

java - 使用java的nextprobableprime()获取previousprobableprime

java - 如何在 Android 中创建 10x10 网格?

c - 解析字符串并将其存储回字符数组时显示随机字节

sql - 在DB2中拆分VARCHAR以检索内部的值

java - 如何将数字字符串转换为字符

java - 不能将字符串转换为日期

具有不可序列化部分的 Java 序列化

java - java中变量类型的圆括号是什么意思?

java - 为什么在 java 方法重写中允许具有协变返回类型,但不允许协变参数?

javascript - 从两个字符之间的字符串中提取信息