早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
若x.y是正数,则(x+2y分之一)的平方+(y+2x分之一)的平方的最小值是?文字讲解详细点好么 2020-04-05 …
在直线l:3x-y-5=0上找一点P,使P到A(5,1)B(4,4)的距离最小,求出最小值在直线l 2020-06-04 …
大家看我写的日期正则表达式年份对不对::1[7-9]|[5-9][3-9]|[2-9][0-9]) 2020-06-20 …
在一条直路的一侧种树,如果两端都种,则{};如果只种一端则{};两端都不种,则{}1、棵树=间隔数 2020-06-20 …
英语翻译1、尝预乡荐,见黜于礼部,遂慨然不复进取意,以疏放自适.2、又有攘其鸡者,可携索就之,其人 2020-07-06 …
正则表达式求解答,有几题正则表达式需要帮忙解答,想看下我自己做的对不对.(1)所有行以字母c开始, 2020-07-23 …
已知a,b是关于X的一元二次方程X^2+(2m+3)+m^2=0的2个不相等的实数根,且满足(1/ 2020-08-02 …
包含于和真包含于暑假自学不知对不对A={1,2,3}B={1,2,3,4}C={1,2,3,4}A真 2020-12-02 …
如果某硬盘的平均等待时间(指需要读/写的扇区旋转到磁头下面的平均时间)为10ms,则该硬盘的转速约为 2020-12-09 …
一对兔子每个月可以生一对小兔子,而一对小兔子生下后第二个月也开始生小兔子。那么从刚出生的一定兔子算一 2021-01-16 …