早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
二进位制数11101(2)转换成十进位 2020-06-08 …
如图是一个“有理数转换器”(箭头是指数进入转换器的路径,方框是对进入的数进行转换的转换器)(1)你 2020-06-12 …
将二进制数111011(2)转化为三进制数一直不懂怎么转化进制 2020-06-28 …
有一个转盘游戏,转盘被平均分成8块,如图别标有1、2、3、45、6、7、8这8个数字,转盘上有指针 2020-07-13 …
如图,是一个“有理数转换器”(箭头是指数进入转换器的路径,方框是对进入的数进行转换的转换器)(1) 2020-07-17 …
二进制数111111转换成十进制帮我做下:将二进制数111111(2)转换为十进制数为()(10) 2020-07-17 …
进制转换(下面有题)请答题1.十六进制数FFF.C相当于十进制数2.二级制小数0.111111转十 2020-07-18 …
如图是一个“数值转换机”(箭头是指数进入转换机的路径,方框是对进入的数进行转换的转换机).(1)当 2020-07-20 …
小明和小刚用如图的两个转盘做游戏,游戏规则如下:分别旋转两个转盘,当两个转盘所转到的数字之积为奇数时 2020-11-07 …
如图,是一个“有理数转换器”(箭头是指数进入转换器的路径,方框是对进入的数进行转换的转换器)(1)当 2020-11-26 …