我使用简单的方法更改字符串值而不更改string的原始长度。然后返回转换将文本更改回纯字符串(转换为原始文本)。
我的代码:
String someText = "abcdefgHIJKLMN";
char[] data = someText.toCharArray();
int LEN = someText.length();
char[] datas = new char[LEN];
System.out.println("Original Text ("+String.valueOf(LEN)+"): "+someText);
for (int i = 0; i < LEN; i++) {
data[i] = Character.valueOf((char) i);
System.out.println(String.valueOf(i) + " = " + String.valueOf((char) i));
}
System.out.println("Add 10 into each charactor : "); // ex a =1 , a+10 : now it's 'k'
for (int i = 0; i < LEN; i++) {
char c = Character.valueOf((char) (Character.getNumericValue(Character.valueOf(data[i])) + 10));
datas[i] = c;
System.out.print(String.valueOf(c));
}
System.out.println("Subtract 10 from each charactor : ");// ex k =11 , k-10 : now it should be 'a'
for (int i = 0; i < LEN; i++) {
char c = (char) (Character.getNumericValue(Character.valueOf(datas[i])) - 10);
System.out.print(String.valueOf(c));
}
但是在添加和减去循环之后,不显示任何内容。 如果有任何解决方案可以在不改变文本原始长度的情况下实现此类事情吗?
这是我想要做的事情:
假设a
的字符值为97
,然后我们将10添加到其中:(97+10) = 107
现在它不是a
它应该是不同的字母,例如k
,因为107字符值为:K
答案 0 :(得分:0)
我认为问题出在第8行:
data[i] = Character.valueOf((char) i);
当i = 0时,data [i]不是'a'。 'a'的值为97(十六进制61): http://www.utf8-chartable.de/
此外,您可以使用'+'添加字符,但'+'运算符的结果是整数,因此您只需将其强制转换为char - 即。
char c = (char) (data[i] + 10);.
同样在你的循环中你使用print而不是println,这就是输出不那么清晰的原因。尝试下面的代码,看看它是否适合您。
String someText = "abcdefgHIJKLMN";
char[] data = someText.toCharArray();
int LEN = someText.length();
char[] datas = new char[LEN];
System.out.println("Original Text ("+String.valueOf(LEN)+"): "+someText);
for (int i = 0; i < LEN; i++) {
System.out.println(String.valueOf(i) + " = " + data[i]);
}
System.out.println("Add 10 into each charactor : "); // ex a =1 , a+10 : now it's 'k'
for (int i = 0; i < LEN; i++) {
char c = (char) (data[i] + 10);
datas[i] = c;
System.out.println(String.valueOf(c));
}
System.out.println("Subtract 10 from each charactor : ");// ex k =11 , k-10 : now it should be 'a'
for (int i = 0; i < LEN; i++) {
char c = (char) (datas[i] - 10);
System.out.println(String.valueOf(c));
}