📄 func.java
字号:
package Calc;
import java.util.*;
public class Func {
public Func() {}
public String subS(String s, int i, int j) { //i,j之间的字符串
i = ( (i > s.length()) ? s.length() : ( (i < 0) ? 0 : i ) );
j = ( (j > s.length()) ? s.length() : ( (j < 0) ? 0 : j ) );
if (i > j) {
s = s.substring(j, i);
} else {
s = s.substring(i, j);
}
return s;
}
public String sSub(String s, int i, int j) { //从i开始,取j个长度
i = ( (i > s.length()) ? s.length() : ( (i < 0) ? 0 : i ) );
j = ( (j > s.length()) ? s.length() : ( (j < 0) ? 0 : j ) );
j = ( (i+j > s.length()) ? s.length() : i + j );
s = s.substring(i, j);
return s;
}
public String sLeft(String s, int i) { //左边i个字符
i = ( (i > s.length()) ? s.length() : ( (i < 0) ? 0 : i ) );
s = s.substring(0, i);
return s;
}
public String sRight(String s, int i) { //右边i个字符
i = ( (i > s.length()) ? s.length() : ( (i < 0) ? 0 : i ) );
s = s.substring(s.length() - i, s.length());
return s;
}
public String sLess(String s, int i) {
s = (i > 0 ? sLeft(s, s.length()-i) : sRight(s, s.length()+i));
return s;
}
public String sThree(String s, String sc) { //加上3位分隔符
String s1 = "";
int j = 0, k = 0;
for (int i = 0; i < s.length(); i++) {
s1 = s.substring(i,i+1);
if ( "0123456789".indexOf(s1) >= 0 ) { j++; }
else if (s1.equals("-")) { j++; k = 1; }
else if (".%".indexOf(s1) >= 0) { break; }
else { j = -1; break; }
}
for (int i = j-3; i > k ; i-=3) {
s = s.substring(0, i) + sc + s.substring(i);
}
return s;
}
public String sComma(String s, String sc) { //去掉3位分隔符
//StringBuffer s2 = new StringBuffer("");
//char s1;
String s2 = "", s1="";
for (int i = 0; i < s.length(); i++) {
s1 = s.substring(i,i+1);
s2 += (s1.equals(sc) ? "" : s1);
}
return s2;
//return s2.toString();
}
public String sDecimal(String s, int deci, int ssw) { //小数点儿位数
if (deci < 0) {
return s;
} else {
//int j = s.indexOf(".");
//if ( j <= 0 ) { return s;} //无点儿
//else if (s.length() <= j + deci + 1) {return s;} //长度未超出
//String s0 = "", s1 = "", s2 = "";
//for (int i = 0; i < s.length(); i++) {
// s1 = s.substring(i, i+1);
// if (("-.0123456789").indexOf(s1) < 0) { return s;}//数字为科学计数法或其他的
// if ( i < j + deci ) { s0 += s1; }
// else if (i == j + deci) {
// s2 = s.substring(i+1, i+2); //后一位
// if ( "0123456789".indexOf(s2) >= 0 ) { //是数字
// if (Integer.parseInt(s2) >= ssw) { //四舍五入
// s0 += Integer.toString((Integer.parseInt(s1) + 1) % 10);
// } else {s0 += s1;}
// break;
// }
// }
// else {}
//}
s = Double.toString(dDecimal(Double.parseDouble(s), deci, ssw));
return s;
}
}
public double dDecimal(double d0, int deci, int ssw) { //四舍五入,数字、几位小数、几入(少则舍,如9表时切掉,0表明全入,5四舍五入)
if (deci < 0 || deci > 15) { return d0;}
else {
double d1 , d2 ;
long l0 = 1, l1, l2;
for (int i = 0; i < deci; i++) { l0 = l0 * 10; }
d1 = d0 % 1; //小数
if (d1 == 0) {return d0;}
//System.out.println("d1:"+d1);
l1 = (long) (d1 * l0); //变为整数
l2 = (long) ((d1 * l0 * 10) % 10); //后一位
l2 = (l2 >= ssw ? 1 : 0); //舍或入
l1 += l2;
//System.out.println("l1:"+l1);
d2 = ((double) (l1)) / ((double) (l0)); //变为小数
//System.out.println("d2:"+d2);
d0 = d0 - d1 + d2; //结果
//d2 = ((d2%1) > ssw ? d1*10 : 0);
//System.out.println("d1:"+d1);
//d0 = d0 - d2 + d1;
//System.out.println("d0:"+d0);
return d0;
}
}
public String trimResult(String s, int m) { //限制数字长度
if (s.length() < m) { return s;}
if (!isNum(s)) { return s;}
double d0;
int i = 0;
d0 = Double.parseDouble(s);
boolean b = (d0 < 0);
d0 = Math.abs(d0);
while (d0 > 10) {
d0 = d0 / 10;
i ++;
}
while (d0 < 1) {
d0 = d0 * 10;
i --;
}
if (i == 0) { return s;}
s = Double.toString(d0);
s = (s.length() > m - 5 ? s.substring(0, m - 5) : s);
s += " E" + (i>0 ? "+" : "") + Integer.toString(i);
s = (b ? "-" : "") + s;
//System.out.println(s);
return s;
}
public String trimZero(String s) { //去掉数值尾0
String s1 = "";
int k = 0;
int i = s.indexOf(".");
if ( i > 0 ) {
for (int j = i + 1; j < s.length(); j++) {
s1 = s.substring(j, j+1);
if ( s1.equals("0") ) { k ++; }
else if ( "0123456789".indexOf(s1) >= 0 ) { k = 0; }
else { k = 0; break; }
}
}
if ( k > 0 ) { s = sLess(s, k); }
if (s.endsWith(".") ) { s = sLess(s, 1); }
return s;
}
public boolean isNum(String s) { //看字符串能否转为数值
try {
double i1 = Double.parseDouble(s);
return true;
} catch (NumberFormatException ne) {
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -