【问题标题】:Filter out unwanted string in map过滤掉地图中不需要的字符串
【发布时间】:2017-12-02 00:53:26
【问题描述】:

编辑:

我有这样的字符串:

String value1 = "xyzz#@#$%helloworldtestdata"

String value1 = "xyzztestcase" or String value1 = "notincludedxyzztestcase"

String value2 = "xxxyz! xyyz xyzz xyyz"

我正在尝试用相应的单词过滤掉每个字符串。到目前为止,我有这段代码,它很好,但没有 value1

Map<String, String> map = new HashMap<String, String>();
    map.put("xxxyz!", "test1");
    map.put("xxxyz?", "test2");
    map.put("xyyz", "test3");
    map.put("xyzz", "test4");

    for (String s : map.keySet()) {
        if (value2.contains(s)) {
            value2 = value2.replaceAll(s, map.get(s));
        } 
    }

如果我使用 value2 这里是我得到的输出:

test1 test3 test4 test3

但如果我使用 value1,我会得到这个:

test4#@#$%helloworldtestdata

如何过滤掉我的map中没有包含的部分,key但不弄乱value1的空格?

【问题讨论】:

  • 过滤掉是什么意思?如果你只想消除它,String.replace("begone", "")
  • 不清楚你想做什么。请阐明您的目标;也许如果您要发布 4-5 个不同的输入示例和预期输出,我们可以推断出您尝试实施的规则。
  • 对不起,我必须编辑帖子。我要做的只是获取地图上的那些单词并消除其他未包含的字符串。我希望这是有道理的。谢谢!
  • 你能展示一个完整的工作代码示例吗?它应该编译并运行并产生您最终看到的确切输出。
  • 另外,请更详细地解释您所说的“我正在尝试用相应的单词过滤掉每个字符串。”

标签: java arrays dictionary


【解决方案1】:

replaceAll 方法只是简单地将 s 的值(地图中的键)取而代之,并将其替换为地图中的 s 值。根据您的描述,与您想要做的类似的事情是做 value2 = value2.replaceAll("#@#$%helloworldtestdata", "");

这会将字符串 #@#$%helloworldtestdata 替换为空字符串。

要在您的方法中执行此重新分配,您需要将以下内容添加到您的地图中: map.put("#@#$%helloworldtestdata", "test5"); (test5 只是一个例子)

添加它不会弄乱 value1 中的空格,因为它要替换的字符串(正则表达式)尚未针对您要查找的任何其他字符串进行更改。

【讨论】:

    【解决方案2】:

    我不知道我使用的是什么,但这里我在我的代码中使用。

    var = "如何设置爱情"

    我只使用一组来获得我想要的价值。 打印变量[:2]

    会得到“如何”

    是的,如果你替换只是使用 x = var.replace("我会", "怎么做")

    它会得到“我会被爱”

    如果我发火请纠正我?

    【讨论】:

      猜你喜欢
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多