检查列中分隔符的例程

问题描述 投票:0回答:1

我正在接触 Java,并用 Java 为 Talend 例程编写一些代码。该例程将用作用户定义的函数来检查列数据是否具有分隔符,如果是,则拒绝该行,如果没有,则传递该行。

public class CheckDelimiter {
   
    public static boolean checkDelimiter(String inputData,String delimiter) {
        if (inputData.contains(delimiter)) {
            return false;
        } else {
            return true;
        }
    }
}

当将其用作用户定义函数时,会出现布尔值无法转换为字符串的错误。在传递 Talend tmap 时,我给予

CheckDelimiter.checkDelimiter(columname,"|")

我在这里做错了什么?

java talend
1个回答
0
投票

“...当将其用作用户定义函数时,会出现布尔值无法转换为字符串的错误。在传入 Talend tmap 时,我给出

CheckDelimiter.checkDelimiter(columname,"|")


我在这里做错了什么?”

提供的代码可以正常运行。

您描述的错误发生在将 boolean 值分配给预期 String 值的位置时。

例如。

String s = true;
java: incompatible types: boolean cannot be converted to java.lang.String

考虑到您的 checkDelimiter 方法返回一个 boolean 值,我想您在其他地方错误地应用了它。

您可以采取一些措施来解决此问题。

将返回值包装在 String#valueOfBoolean#toString 调用中。

String s = String.valueOf(CheckDelimiter.checkDelimiter(columname,"|"));
String s = Boolean.toString(CheckDelimiter.checkDelimiter(columname,"|"));

或者,使用 Boolean 类作为返回类型,它提供了 toString 方法。

public static Boolean checkDelimiter(String inputData,String delimiter)
String s = CheckDelimiter.checkDelimiter(columname,"|").toString();

或者最后,将 checkDelimiter 的返回值调整为 String

public static String checkDelimiter(String inputData,String delimiter) {
    if (inputData.contains(delimiter)) {
        return String.valueOf(false);
    } else {
        return String.valueOf(true);
    }
}

最后一点,您可以将条件语句减少为单个返回。

public static boolean checkDelimiter(String inputData,String delimiter) {
    return !inputData.contains(delimiter);
}
© www.soinside.com 2019 - 2024. All rights reserved.