我有一个字符串数组,每个字符串包含3个字母的字符串。每3个字母(每个元素)对应一个唯一的字母。我需要从字符串数组创建一个char数组。
我能想到这样做的唯一方法是循环遍历字符串数组中的每个元素,并使用long switch语句来确定其关联的单个字符。
还有哪些其他方法可以实现?
答案 0 :(得分:3)
如果是映射/查找,那么通常地图/字典可以解决您的问题。 C#中的这种结构示例:
string[] inList = new[]{"bee", "kay", "kay", "eff" };
Dictionary<string, char> mapping = new Dictionary<string, char>
{
{"bee", 'b'},
{"eff", 'f'},
{"kay", 'k'},
};
如果您有这样的映射,那么只需查看映射中的字母,或将整个字符串列表转换为字符数组。
char[] chars = inList.Select(s => mapping[s]).ToArray();
几乎所有语言都支持这种类型的数据结构,尽管并非所有语言都支持最后一个片段的功能结构。在这种情况下,您需要一个循环来构建out数组。
编辑:看到你添加了java标签。您可以在java中完成相同的操作,然后您的字典将成为java中的HashMap
。所以只需服用阿司匹林并查看How can I initialise a static Map?
答案 1 :(得分:3)
我认为你需要的是从字符串到char的Hashmap映射
答案 2 :(得分:2)
您可以使用如下数组设置查找表:
lookuptable = {{'a','abc'},{'b','abd'} ....}
然后你只需查找数组中的相应值。
如果您的语言支持词典,则会更容易。
答案 3 :(得分:0)
您可以使用枚举来定义元素和相应的字符。然后有一个解密值的方法。
示例:
public enum EncryptedValue {
A ("A", "EDK"),
B ("B", "CHI"),
C ("C", "WAD"),
...;
private String value;
private String encryption;
private static final List<EncryptedValue> VALUES = Collections.unmodifiableList(Arrays.asList(values()));
private EncryptedValue(String value, String encryption) {
this.value = value;
this.encryption = encryption;
}
public String getValue() {
return value;
}
public String getEncryption() {
return encryption;
}
public String decrypt(Strign encryption) {
for (EncryptedValue encryptedValue : VALUES) {
if (encryptedValue.getEncryption().equalsIgnoreCase(encyrption))
return encryptedValue.getValue();
}
return null;
}
}