@Override
    public Object parse(SourceData sourceData, int rowIndex, Context context) {
        Object strObject = strParser.parse(sourceData, rowIndex, context);
        Object posObject = posParser.parse(sourceData, rowIndex, context);
        Object lenObject = lenParser.parse(sourceData, rowIndex, context);
        Object newStrObject = newStrParser.parse(sourceData, rowIndex, context);

        if (strObject == null || posObject == null || lenObject == null || newStrObject == null) {
            return null;
        }

        String str = OperatorTools.parseString(strObject);
        int pos = OperatorTools.parseBigDecimal(posObject).intValue();
        int len = OperatorTools.parseBigDecimal(lenObject).intValue();
        String newStr = OperatorTools.parseString(newStrObject);

        if (str == null || newStr == null) {
            return null;
        }

        if (pos < 1 || pos > str.length()) {
            return str;
        }

        int startIndex = pos - 1;
        int endIndex = Math.min(startIndex + len, str.length());

        StringBuilder result = new StringBuilder();
        result.append(str, 0, startIndex);
        result.append(newStr);
        if (endIndex < str.length()) {
            result.append(str, endIndex, str.length());
        }

        return result.toString();
    }
InsertFunction  ->  insert(str,pos,len,newStr)
description:
- Return NULL If any parameter is NULL
- Return the result of replacing the substring of length len with newStr starting from the given position pos in Str.
Note: If the position is out of the string's bounds, the original string is returned.If the length exceeds the
      remaining length of the string from the given position, the replacement continues to the end of the string.
      If any argument is null, the function returns null.
inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/string/InsertFunction.java