code: public static boolean isAsciiDigtalNumber(final String str) {
          if (N.isNullOrEmpty(str)) {
              return false;
          }
  
          final char[] chs = getCharsForReadOnly(str);
  
          int i = 0, num = 0;
          if (chs[i] == '+' || chs[i] == '-') {
              i++;
          }
  
          for (; i < chs.length && (chs[i] >= '0' && chs[i] <= '9'); i++) {
              num++;
          }
  
          if (i < chs.length && chs[i] == '.') {
              if (num == 0) {
                  return false;
              } else {
                  num = 0;
              }
  
              i++;
          }
  
          for (; i < chs.length && (chs[i] >= '0' && chs[i] <= '9'); i++) {
              num++;
          }
  
          if (num == 0) {
              return false;
          }
  
          if (i == chs.length) {
              return true;
          } else if (chs[i] != 'e' && chs[i] != 'E') {
              return false;
          } else {
              i++;
          }
  
          num = 0;
          if (i < chs.length && (chs[i] == '+' || chs[i] == '-')) {
              i++;
          }
  
          for (; i < chs.length && (chs[i] >= '0' && chs[i] <= '9'); i++) {
              num++;
          }
  
          if (num == 0) {
              return false;
          } else if (i == chs.length) {
              return true;
          } else {
              return false;
          }
      }
docs: <code>true</code> is returned if the specified <code>str</code> only
  includes characters ('0' ~ '9', '.', '-', '+', 'e').
  <code>false</code> is return if the specified String is null/empty, or contains empty chars.
  
  "0" => true
  " 0.1 " => false
  "abc" => false
  "1 a" => false
  "2e10" => true
  "2E-10" => true
  
  @param val
  @return