早教吧作业答案频道 -->其他-->
java对字符操作/23b2f4转换/333bbbbb/UL/UL/ULf41,若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中。2,若已知字符串的当前字符是一数字字符,且它之后没有
题目详情
java 对字符操作
/23b_2__f4转换/_333_bbbb_b_/UL____/UL_/UL_f_4
1,若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中。
2,若已知字符串的当前字符是一数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中。
3,若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括数字字符)重复复制n+1次到新字符串中。
4,以上一次变换为一组,在不同组之间插入一个下划线‘_’用于分隔。
5,若已知字符串中包括有下划线‘_’,则变换为用“/UL”。
用encode()和decode()两个函数实现分别实现对字符串变换和复原
例如 encode()对字符串24ab_2t2的变换结果为444_aaaaa_a_b_/UL_ttt_t_2
复原函数decode()做变换函数encode()的相反工作,按照上述规则逆运算,变回原来的字符串。滤掉!多余的下划线字符。
/23b_2__f4转换/_333_bbbb_b_/UL____/UL_/UL_f_4
1,若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中。
2,若已知字符串的当前字符是一数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中。
3,若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括数字字符)重复复制n+1次到新字符串中。
4,以上一次变换为一组,在不同组之间插入一个下划线‘_’用于分隔。
5,若已知字符串中包括有下划线‘_’,则变换为用“/UL”。
用encode()和decode()两个函数实现分别实现对字符串变换和复原
例如 encode()对字符串24ab_2t2的变换结果为444_aaaaa_a_b_/UL_ttt_t_2
复原函数decode()做变换函数encode()的相反工作,按照上述规则逆运算,变回原来的字符串。滤掉!多余的下划线字符。
▼优质解答
答案和解析
public static String encode(String str) {
StringBuffer buff = new StringBuffer();
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (i != 0)
buff.append("_");
if (arr[i] > 48 && arr[i] <= 57) {
if (i < arr.length - 1) {
for (int j = 0; j <= Integer.parseInt(String
.valueOf(arr[i])); j++) {
buff.append(arr[i + 1]);
}
} else {
buff.append(arr[i]);
}
} else {
if (arr[i] == 95) {
buff.append("/UL");
} else {
buff.append(arr[i]);
}
}
}
return buff.toString();
}
public static String decode(String str) {
StringBuffer buff = new StringBuffer();
String[] arr = str.split("_");
int spaceCnt = 0;
for (int i = 0; i < arr.length; i++) {
if ("".equals(arr[i])) {
spaceCnt++;
} else {
buff.append(spaceCnt > 1 ? spaceCnt - 1 : "");
spaceCnt = 0;
if ("/UL".equals(arr[i])) {
buff.append("_");
} else if (arr[i].length() > 1) {
buff.append(arr[i].length() - 1);
} else {
buff.append(arr[i]);
}
}
}
return buff.toString();
}
未充分测试,你拿去用用看吧!
StringBuffer buff = new StringBuffer();
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (i != 0)
buff.append("_");
if (arr[i] > 48 && arr[i] <= 57) {
if (i < arr.length - 1) {
for (int j = 0; j <= Integer.parseInt(String
.valueOf(arr[i])); j++) {
buff.append(arr[i + 1]);
}
} else {
buff.append(arr[i]);
}
} else {
if (arr[i] == 95) {
buff.append("/UL");
} else {
buff.append(arr[i]);
}
}
}
return buff.toString();
}
public static String decode(String str) {
StringBuffer buff = new StringBuffer();
String[] arr = str.split("_");
int spaceCnt = 0;
for (int i = 0; i < arr.length; i++) {
if ("".equals(arr[i])) {
spaceCnt++;
} else {
buff.append(spaceCnt > 1 ? spaceCnt - 1 : "");
spaceCnt = 0;
if ("/UL".equals(arr[i])) {
buff.append("_");
} else if (arr[i].length() > 1) {
buff.append(arr[i].length() - 1);
} else {
buff.append(arr[i]);
}
}
}
return buff.toString();
}
未充分测试,你拿去用用看吧!
看了 java对字符操作/23b2...的网友还看了以下:
下列字母中含有共同读音/e/的一组是。[]A.f,l,m,nB.h,f,l,kC.b,e,g,pD 2020-05-15 …
某工厂的生产函数是Q=f(L,K),已知(1)当L=64,K=20时,Q=25000;(2)当L= 2020-06-12 …
FORTRAN求均布荷载Q和跨中集中力Fp作用下跨多为L的简支梁,最大弯矩和最大挠度?情帮忙看一下 2020-07-11 …
已知生产函数Q=f(L,K)=3KL-0.3L3(L3为L的3次方)-0.5K2(K2为K的2次方 2020-07-18 …
已知A,B,C是直线l上的不同三点,O是l外一点,向量OA,OB,OC满足满足OA=(3/2(x^ 2020-08-03 …
已知抛物线C:y2=4x的焦点F,过F的直线l与C相交于A,B两点,若AB的垂直平分线l.已知抛物 2020-08-03 …
三元一次方程组a*x+b*y+c*z+d=0,e*x+f*y+g*z+h=0,i*x+j*y+k* 2020-08-03 …
已知双曲线x2/a2-y2/b2=1的渐近线方程为y=正负根号3/3x,左焦点为F,过A(a,0), 2020-11-08 …
(1)某次研究弹簧所受弹力F与弹簧长度L关系实验时得到如图a所示的F-L图象,由图象可知:弹簧原长L 2020-12-01 …
如图所示,斜面长L,高h,现在用力F沿斜面把质量为m的物体从斜面的底端匀速拉到顶端,已知物体与斜面的 2021-01-23 …