那种时髦的新手如此忍受我。我有一个包含一系列文本字段的表单。我也过滤了其中两个字段。这部分有效,但返回的值的格式不是我希望它格式化的方式。我应该使用toString或join或其他什么?我是一个时髦的新手,所以代码样本将非常感激
这是我的代码:
String message = request.requestParameterMap.findAll { key, value ->!(key in [“userKey", "topicKey"]) }.toString()
这是我的输出:
[fname:[joey], lname:[bats], phone:[999-999-9999], email:[test@gmail.com]]
理想情况下,我喜欢我的输出:
fname: joey
lname: bats
phone: 999-999-9999
email: test@gmail.com
答案 0 :(得分:1)
String message =
request.requestParameterMap
.findAll { key, value ->!(key in [“userKey", "topicKey"]) }
.collect { k, v -> "$k: ${v[0]}\n" }
.join()
应以预期格式提供消息
fname: joey
lname: bats
phone: 999-999-9999
email: test@gmail.com
答案 1 :(得分:0)
快速而肮脏的方法是使用一系列replaceAll(...)
来格式化您想要的代码。
替换前导和尾随括号:
message = message.replaceAll("^[|]$", "");
用空格替换左括号:
message = message.replaceAll("\\[", " ");
并用换行符替换右括号逗号空格:
message = message.replaceAll("\\],\\s+", "\n");
很有可能,甚至可能存在一些工具来更快地格式化它,但是没有一个能让我想到。
根据你想要做的事情,你可能更喜欢split
字符串来获取一个数组,但这实际上取决于你将要用它做什么。
答案 2 :(得分:0)
使用inject
将地图缩减为字符串:
def m = [fname: 'joey', name: 'bats', phone: 999-999-9999, email: 'test@gmail.com']
m.inject("") { result, e ->
result += "$e.key: $e.value\n"
result
}
结果:
fname: joey
name: bats
phone: -9999
email: test@gmail.com