Java字符串搜索模式存在问题(包含/匹配)

时间:2019-04-17 07:33:37

标签: java string

我有一个包含几个属性值的字符串。通过使用一些简单的正则表达式来验证字符串是否包含特定的属性值时,matches函数始终返回false值。

现在我需要类似的行为

  1. 如果String包含 ChipGroup chipGroup = findViewById(R.id.cg_filter_items); for (int i = 0; i < 10; i++) { View view = LayoutInflater.from(this).inflate(R.layout.item_filter_chips, chipGroup, false); Chip chip = view.findViewById(R.id.chips_item_filter); chip.setText("chip Text " + i); chip.setClickable(true); chip.setCheckable(true); chipGroup.addView(chip); chip.setOnClickListener(<Your Listener>); } ,那么我需要\"import\" : 设置为true。
  2. 如果String包含isExportSet,那么我需要 \"path\" : true设置为true。

我尝试如下所示,但是对我来说不起作用:

isPathSet

4 个答案:

答案 0 :(得分:0)

测试包含\"import\"的字符串只是检查该字符串是否包含"import"。在您的正则表达式中,您需要忽略\检查,因为这是Java的转义字符,它能够处理字符串中的双引号而不结束字符串定义。但是,您也需要在正则表达式中转义这些字符。

对于"import",正则表达式变为str.matches(\"import\")。与"path"字符串类似。

我发现这是一个方便的工具来检查正则表达式:Free Formatter

答案 1 :(得分:0)

您可以简单地使用str.contains("valueToSerach")

答案 2 :(得分:0)

您可以使用

\"import\"
\"(path|multipath)\"

请不要将*与另一个会导致错误的数量指示器连接。

而且,由于您想勾选“”,因此必须在表达式中包括它们。

答案 3 :(得分:0)

请让我知道以下代码是否满足问题的定义。

static String str = "\"import\" : \"static\",\"path\" : true";

static void test(String str) {
    Map<String, String> map = new HashMap<String, String>();
    String[] parts = str.split("(:|,)");
    for (int i = 0; i < parts.length - 1; i+=2) {
        map.put(getUnquotedStr(parts[i]), getUnquotedStr(parts[i+1]));
    }
    System.out.println(map.size() + " entries: " + map); // 2 entries: {path=true, import=static}
    boolean isExportSet = "".equals(map.get("import"));
    boolean isPathSet = "true".equals(map.get("path"));
    System.out.println(isExportSet + " - " + isPathSet);
}

private static String getUnquotedStr(String str) {
    return str.replaceAll("\"", "").trim();
}

将在控制台上打印如下:

  • 2个条目:{path = true,import = static}
  • false-true