/**
 * 转换字符串为正数
 * @param value 入参
 * @param scale 小数点保留位数 默认2位
 * @returns 转换后的结果
 */
export function formatToPositiveNumber(value, scale) {
  if (value == "") {
    return "";
  }
  if (scale <= 0) {
    scale = 2;
  }
  // 使用正则表达式匹配浮点数，保留两位小数
  // /^(\d+)?(\.\d{1,2})?$/;
  const text = "^(\\d+)?(\\.\\d{1," + scale + "})?$";
  const regex = new RegExp(text);
  // 如果输入的值不符合正则表达式，则设置为上一个合法的值
  if (!regex.test(value)) {
    let scaleReg = "";
    for (let i = 0; i < scale; i++) {
      scaleReg += `\\d`;
    }
    const numRegex = new RegExp(`^(\\-)*(\\d+)\\.(${scaleReg}).*$`);
    value = value
      .replace(/[^\d.]/g, "") // 清除"数字"和"."以外的字符
      .replace(/[^.\d]/g, "")
      .replace(/^\./g, "") // 验证第一个字符是数字而不是字符
      .replace(/\.{2,}/g, ".") // 只保留第一个.清除多余的
      .replace(".", "$#$")
      .replace(/\./g, "")
      .replace("$#$", ".")
      .replace(numRegex, "$1$2.$3");
  }
  // 整数保留9位
  let integerNum = value.split(".")[0];
  const pointIndex = value.indexOf(".");
  integerNum = integerNum.slice(0, 9);
  return (
    integerNum +
    (pointIndex >= 0 ? value.substring(pointIndex, value.length) : "")
  );
}
