如果元素包含空格,则创建更长的数组? (JAVA)

时间:2016-02-28 03:54:37

标签: java arrays whitespace

目前我正在尝试制作一个执行以下操作的方法:

  • 采用3个字符串数组(单词,beforeList和afterList)
  • 查找包含在单词和beforeList中的单词,如果找到,则替换为afterList中的单词
  • 返回一个新数组,该数组将包含afterList中字符的元素自行转换为新元素

例如,这是一个测试案例,请注意"我""在最后的数组中被分成两个元素" i"和" am":

    String [] someWords = {"i'm", "cant", "recollect"};
    String [] beforeList = {"dont", "cant", "wont", "recollect", "i'm"};
    String [] afterList = {"don't", "can't", "won't", "remember", "i am"};
    String [] result = Eliza.replacePairs( someWords, beforeList, afterList);
    if ( result != null && result[0].equals("i") && result[1].equals("am") 
            && result[2].equals("can't") && result[3].equals("remember")) {
        System.out.println("testReplacePairs 1 passed.");
    } else {
        System.out.println("testReplacePairs 1 failed.");
    }

我最大的问题是考虑这种空白情况。我知道我将在下面发布的代码是错误的,但是我一直在尝试不同的方法。我认为我的代码现在应该返回一个空数组,该数组是第一个的长度但占空格。我意识到它可能需要一种完全不同的方法。任何建议都会受到赞赏,我会继续尝试解决这个问题,但如果有办法做到这一点,那么我很乐意听取并从中学习!谢谢。

public static String[] replacePairs(String []words, String [] beforeList, String [] afterList) {
    if(words == null || beforeList == null || afterList == null){
        return null;
    }
    String[] returnArray;
    int countofSpaces = 0;
    /* Check if words in words array can be found in beforeList, here I use     
       a method I created "inList". If a word is found the index of it in                    
       beforeList will be returned, if a word is not found, -1 is returned.
       If a word is found, I set the word in words to the afterList value */
    for(int i = 0; i < words.length; i++){
        int listCheck = inList(words[i], beforeList);
        if(listCheck != -1){
            words[i] = afterList[listCheck];
        }
    }
    // This is where I check for spaces (or attempt to)
    for(int j = 0; j < words.length; j++){
        if(words[j].contains(" ")){
            countofSpaces++;
        }
    }
    // Here I return an array that is the length of words + the space count)
    returnArray = new String[words.length + countofSpaces];
    return returnArray;

}

1 个答案:

答案 0 :(得分:0)

这是执行此操作的众多方法之一,假设您必须处理单词包含多于1个连续空格的情况:

    for(int i = 0; i < words.length; i++){
        int listCheck = inList(words[i], beforeList);
        if(listCheck != -1){
            words[i] = afterList[listCheck];
        }
    }

    ArrayList<String> newWords = new ArrayList<String>();

    for(int i = 0 ; i < words.length ; i++) {
        String str = words[i];
        if(str.contains(' ')){
            while(str.contains("  ")) {
                str = str.replace("  ", " ");
            }

            String[] subWord = str.split(" ");

            newWords.addAll(Arrays.asList(subWord));
        } else {
            newWords.add(str);
        }
    }

    return (String[])newWords.toArray();