gpt4 book ai didi

java - 使用 Lambda 表达式使用 HashMap 替换字符串中的字符

转载 作者:搜寻专家 更新时间:2023-11-01 01:32:20 27 4
gpt4 key购买 nike

所以我正在做一个项目,在这个项目中,我必须将包含希腊字母的字符串转换为包含该字母的英文表示形式的字符串。所以一个希腊人α会变成alphaΑ会变成Alpha .

我创建了一个 HashMap,它具有从 Unicode 字符到普通字符串的适当转换。

我使用了一个简单的 For循环检查是否 Char在输入StringKeyHashMap如果是,那么我将使用 StringBuilder 附加它的替换.这是我用来执行此操作的代码:

char[] ca = snippet.toCharArray();
StringBuilder out = new StringBuilder();
for (char c : ca) {
if (GREEK_LETTER_DICT.containsKey(Character.toString(c))) {
out.append( GREEK_LETTER_DICT.get(Character.toString(c)));
} else {
out.append(c);
}
}
return out.toString();

这是在带有 String 的公共(public)静态方法中作为输入。我想知道的是是否可以用 lambda 表达式做同样的事情?我已经找到了几个替代 Character 的解决方案在String但他们不使用 HashMap/Dictionary .

我知道为了使用 lambda 表达式而将其转换为 lambda 表达式是完全没有用的,但是因为我有另外 7 个这样的函数将我的代码缩短了近 60% 我想看看它是否完全有可能在“一行”代码中做到这一点。这样我就可以减少使用的单独方法的数量并获得更清晰的代码。

到目前为止,我已经找到了一种方法来转换 StringStream使用:

String.chars()

然后转换这个 IntStreamStream<Character>

.mapToObj(ch -> (char) ch)

并过滤以查看是否 CharacterHashMap

.filter(ch -> (GREEK_LETTER_DICT.containsKey(ch)))

问题在于我做不到

  1. 附加原件Character到输出 String如果它不在 HashMap
  2. 替换Character使用 HashMap 中的字符串

因此,如果您对这两点有任何帮助,我们将不胜感激。我发现有时候我的想法是错误的,因为我没有看是否 CharacterString等于 Character在选项列表中,我应该检查该选项列表是否返回正数 index .所以这个(伪代码):

"StringWithOptions".indexOf('characterLiteral')

而不是这个:

Character.equals("One|of|these")

最佳答案

怎么样:

public static String replaceGreekLetters(String snippet) {
return snippet
.chars()
.mapToObj(c -> (char) c)
.map(c -> GREEK_LETTER_DICT.getOrDefault(c, c.toString()))
.collect(Collectors.joining());
}

关于java - 使用 Lambda 表达式使用 HashMap 替换字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38246623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com