package com.engine.salary.formlua.func.string;

import com.engine.salary.formlua.entity.parameter.DataType;

/**
 * @className：
 * @Description：Excel文本函数
 * @Author：
 * @date：
 */
public interface StringFormulaService {
	/**
	 * 连接字符串
	 * @param objs
	 * @return
	 */
	public DataType concatString(Object... objs);

	/**
	 * 转为文本
	 * @param obj
	 * @return
	 */
	public DataType text(Object... obj);

	/**
	 * 文本转数字
	 * @param txt
	 * @return
	 */
	public DataType value(Object... txt);

	/**
	 * 文本长度
	 * @param txt
	 * @return
	 */
	public DataType len(Object... txt);

	/**
	 * 检索关键字
	 * @param objects
	 * @return
	 */
	public DataType search(Object... objects);

	/**
	 * 替换文本
	 * @param objects
	 * @return
	 */
	public DataType replace(Object... objects);

	/**
	 * 重复文本拼接返回
	 * @param objects
	 * @return
	 */
	public DataType repeat(Object... objects);

	/**
	 * 填充文本至指定长度
	 * @param objects
	 * @return
	 */
	public DataType pad(Object... objects);

	/**
	 * 去除首尾空格
	 * @param objects
	 * @return
	 */
	public DataType trim(Object... objects);

	/**
	 * 返回文本左侧开始的文字
	 * @param objects
	 * @return
	 */
	public DataType left(Object... objects);
	/**
	 * 返回文本右侧开始的文字
	 * @param objects
	 * @return
	 */
	public DataType right(Object... objects);
	/**
	 * 返回文本指定位置开始的文字
	 * @param objects
	 * @return
	 */
	public DataType mid(Object... objects);

	/**
	 * 返回分数，同value函数逻辑
	 * @param objects
	 * @return
	 */
	public DataType score(Object... objects);

	/***
	 * 操作身份证信息
	 * @param objects
	 * @return
	 */
	public DataType idCard(Object... objects);

	public DataType sex(String idCard);

	public DataType nativePlace(String idCard);

	public DataType age(String idCard);

	public DataType bd(String idCard);

	/**
	 * 地址解析函数
	 * @param address 具体地址
	 * @param level 想获取的行政级别，省市区
	 * @return
	 */
	public DataType addressAnalysis(Object address,Object level);

	/**
	 * 字符截取函数
	 * @param objects 第一个源字符，第二个是截取开始位置，第二个是截取结束位置
	 * @return
	 */
	public DataType subString(Object... objects);

	/**
	 * 字符查找替换函数
	 * @param objects 第一个参数是源字符串，第二个参数是被替换字符，第三个参数是替换时使用的新字符
	 * @return
	 */
	public DataType substitue(Object... objects);

	/**
	 * 字符提取函数，第一个参数是源字符，第二个参数是提取类型
	 * @param objects
	 * @return
	 */
	public DataType extract(Object... objects);

	/**
	 * 字符转小写
	 * @param objects
	 * @return
	 */
	public DataType lower(Object... objects);

	/**
	 * 字符转大写
	 * @param objects
	 * @return
	 */
	public DataType upper(Object... objects);

	/**
	 * 字符比较，是否完全相等，区分大小写
	 * @param objects
	 * @return
	 */
	public DataType exact(Object... objects);

	/**
	 * 是否是字符串
	 * @param objects
	 * @return
	 */
	public DataType isString(Object... objects);

	/**
	 * 是否是JSON字符串
	 * @param objects
	 * @return
	 */
	public DataType isJson(Object... objects);

	/**
	 * 从JSON中获取值
	 * @param objects
	 * @return
	 */
	public DataType getJSONValue(Object... objects);
}
