我使用简单的方法来改变字符串值,而不改变string.then的原始长度,反向转换,将文本改回纯字符串(变成原始文本)。
我的代码:
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
发布于 2014-08-15 19:11:01
我认为问题出在第8行:
data[i] = Character.valueOf((char) i);当i=0时,datai不是'a‘。'a‘的值为97 (十六进制61):http://www.utf8-chartable.de/
此外,您可以使用'+‘添加字符,但'+’运算符的结果是整数,因此您只需将其转换为char - ie。
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));
}https://stackoverflow.com/questions/25324898
复制相似问题