【发布时间】:2018-11-18 20:21:38
【问题描述】:
大家好,
我有一个看起来像这样的字符串(摩尔斯电码):
....x.x.-..x.-..x---xx...x-x.-x-.-.x-.-x---x...-x.x.-.x..-.x.-..x---x.--
单“x”表示字母在该点结束,双“x”表示它是整个单词的结尾。我有一张带有摩尔斯电码的地图。我将字符串按“x”拆分,然后将每个编码的字母与字典中的值进行比较,并将匹配的键附加到我的 StringBuilder,它可以正常工作,但我想在单词之间保留空格而不是双 xx。
我的一段代码:
private static final Map<Character, String> morseCode;
static {
morseCode = new HashMap<Character, String>();
morseCode.put('h', "....");
morseCode.put('e', ".");
morseCode.put('l', ".-..");
morseCode.put('o', "---");
morseCode.put('s', "...");
morseCode.put('t', "-");
morseCode.put('a', ".-");
morseCode.put('c', "-.-.");
morseCode.put('k', "-.-");
morseCode.put('v', "...-");
morseCode.put('r', ".-.");
morseCode.put('f', "..-.");
morseCode.put('w', ".--");
}
String decodedMorseTable = "....x.x.-..x.-..x---xx...x-x.-x-.-.x-.-x---x...-x.x.-.x..-.x.-..x---x.--"
StringBuilder decodedText = new StringBuilder();
String[] splitLetters = decodedMorseTable.split("x");
for(String letter: splitLetters) {
for(Map.Entry<Character, String> entry: morseCode.entrySet()) {
if(entry.getValue().equals(letter))
decodedText.append(entry.getKey());
输出:
hellostackoverflow
【问题讨论】:
-
为什么不拆分在xx的第一个得到单词,然后在x的单词内得到字母呢?
-
你是什么意思:我想在单词之间保留空格而不是双xx?
-
@NiVer 代替双 xx* 抱歉造成混淆
-
@AndyTurner 我已经尝试过这种方式,但似乎我拆分不正确,最终它会检查我的地图,字母之间有空格,并且输出不完全正确跨度>
标签: java string algorithm collections split