jquery 从数组的索引中移除元素

kiayqfof  于 11个月前  发布在  jQuery
关注(0)|答案(2)|浏览(128)

我有一个问题,我必须删除一个数组。例如;

2 (3, 5, 6)

字符串
在这种情况下,在th数组中。
例如,我必须在我的主类中实现这个定义,

ecr0jaav

ecr0jaav1#

这个问题的代码可以进行大量优化,但是假设我们想要一个更容易理解的答案,这里有一些java代码来用它的同义词替换一个单词,没有输入被验证,所以如果使用null值将失败:

public class SynonymHandler {
    public static void main(String[] args) {
        String[] synonymData = { "merciful", "gracious", "kindly", "forgiving" };
        System.out.println("# original");
        for (String element : synonymData) {
            System.out.println(element);
        }

        String[] modified = removeSynonym(synonymData, "merciful", "gracious");
        System.out.println("# modified");
        for (String element : modified) {
            System.out.println(element);
        }
    }

    private static String[] removeSynonym(String[] synonymData, String word, String synonym) {
        // result will have the same length as source:
        String[] result = new String[synonymData.length];

        // loop through the synonymData
        for (int index = 0; index < synonymData.length; index++) {
        // if word = synonymData[index] use synomyn, else use the original value
            result[index] = word.equals(synonymData[index]) ? synonym : synonymData[index];
        }
        return result;
    }
}

字符串

muk1a3rh

muk1a3rh2#

这是一种非常奇怪的存储数据的方式。这是你的设计还是你处理的?将字符串(单词)的HashMap存储到字符串(同义词)的数组中会更有意义。但是让我们使用你现有的方法。
看起来你的同义词数据是作为一个简单的字符串数组传入的--就像你打印它们时出现的一样--而不是解析成更好的格式。所以synonymData[0]merciful的数据,synonynData[1]powerful的数据。之后,它是自由格式的文本。
让我们看看你的代码:

public static void removeSynonym(String[] synonymData, String word, String synonym) {
    int index = synonymLineIndex(synonymData, word);
    String[] removedSynData = new String[synonymData.length];
    for (int i = 0, int m = 0; i < synonymData.length; i++)
        if (synonymData[index].contains(word))
            removedSynData[m++] = synonymData[i];
}

字符串
你的代码永远不会修改syntax Data。它会创建一个新的removedSynData数组,构建它,然后继续将它转储到地板上,不做任何事情。此外,它与原始结构的风格不同。
有两种基本的方法可以采用。首先,当你这样做时,你会得到正确的索引:

int index = synonymLineIndex(synonymData, word);

方法一:解析行,删除,重建行

方法一是解析这一行--生成一个同义词的字符串数组,然后删除要删除的同义词,然后重新构建一个新的字符串。
做你能做的事:

String[] bigParts = synonymData[index].split("\\|");


在此之后,bigParts[0]包含单词(可能带有白色空格),bigParts[1]包含所有同义词作为单个字符串(可能带有白色空格)。注意,split()接受正则表达式,这就是我包含\\的原因。因此它传递单个\进行拆分,以转义管道字符,否则管道字符将代表OR。
你需要检查数组的长度是否至少为2,然后这样做:

String[] synonyms = bigParts[1].split(",");


你可以遍历数组,去掉白色空间,然后找到你想删除的那个。把它从数组中删除。然后重新组合一个字符串(代码需要你来弄清楚),然后这样做:

synonymData[index] = YourNewString;

方法二:ReplaceAll()

另一种方法是只使用正则表达式和String.replaceAll()。它需要一个复杂的RE来确保你只匹配整个单词。例如,如果你应该删除rent,你不会想匹配parent。这需要时间来弄清楚,但是当你完成时,它是一行代码。

synonymData[index] = synonymData[index].replaceAll("The big RE");

相关问题