1

我使用 Java Swing 开发了一个比较文本工具。我的比较登录是这样工作的。

String A = "Hello World  Java"
String B = "Hello World Java"

我所做的是,我基本上split使用字符串" "(space)然后添加到我的数组列表中。数组列表将如下所示。

array1(0) = {Hello} array1(1)={World} array1(2)={Java}
array2(0) = {Hello} array2(1)={World} array2(2)={Java}

然后我比较使用array1 中的第一个元素和array2 中的第一个元素。如果它等于比较是PASS并且如果它失败我需要显示为FAIL。输出将是这样的。

<pass>Hello<pass><pass>World<pass><pass>Java<pass>  

我有一个增强功能,我还需要显示间距。所以我的最终输出需要是这样的。

<pass>Hello<pass><quote><pass>World<pass><quote><quote><pass>Java<pass>

知道如何实现这一目标吗?请指教。

4

3 回答 3

0

我试图对此进行一些模拟,我得到了以下结果:

String A = "Hello World  Java"

输出:

[你好,世界,Java]

String B = "Hello World Java"

输出:

[你好,世界,Java]

所以,为了解决这个问题,我使用替换来清理最终输出,比如:

Arrays.toString(yourString.split(" ")).replace(" ", "").replace(",,", ",")

我认为它适用于每个输入。

希望对你有帮助^^

于 2013-09-23T11:19:36.330 回答
0

尝试用数组中的元素替换原始字符串的部分内容,其中元素将通过通过或失败的信息“增强”。

void checkString(String orig, String part, Boolean passed) {
    if (passed) {
        a.replace(part, "<pass>" + part + "<pass>");
    } else {
        a.replace(part, "<fail>" + part + "<fail>");
    }
}

所以你的例子:

String A = "Hello World  Java"
String B = "Hello World Java"

// Do comparison, like you do

// take your first array
array1(0) = {Hello} array1(1)={World} array1(2)={Java}

// call method for each part in array
checkString(A, array1(0), isPassed);
于 2013-09-23T11:09:52.980 回答
0

这是你想要的吗?

public static String compare(String[] a, String[] b) {
    String op = "";
    int len = a.length > b.length ? a.length : b.length;
    for (int i = 0; i < len; i++) {
        String aVal = "";
        String bVal = "";
        if (a.length > i) {
            aVal = a[i];
        }
        if (b.length > i) {
            bVal = b[i];
        }
        if (aVal.equals(bVal)) {
            op += "<pass>" + a[i] + "<pass>";
        } else {
            op += "<fail>" + a[i] + "<fail>";
        }
        if (i != len - 1) {
            op += "<quote>";
        }
    }
    return op;
}

public static void main(String[] args) {
    String A = "Hello World Java1 A";
    String B = "Hello World Java";
    String[] splitA = A.split(" ");
    String[] splitB = B.split(" ");
    System.out.println(compare(splitA, splitB));
}

输出:

<pass>Hello<pass><quote><pass>World<pass><quote><fail>Java1<fail><quote><fail>A<fail>
于 2013-09-23T11:35:39.220 回答