Java问题: 如果我有一个字符串“a”,我怎么能“添加”字符串的值,所以我得到一个“b”,依此类推? 比如“a ++”
答案 0 :(得分:12)
String str = "abcde";
System.out.println(getIncrementedString(str));
<强>输出强>
BCDEF
//此代码将以unicode序列提供下一个char
public static String getIncrementedString(String str){
StringBuilder sb = new StringBuilder();
for(char c:str.toCharArray()){
sb.append(++c);
}
return sb.toString();
}
答案 1 :(得分:4)
如果使用char原语数据类型,则可以完成此操作:
char letter = 'a';
letter++;
System.out.println(letter);
打印出b
答案 2 :(得分:2)
我对te paulo eberman代码进行了一些更改,以处理数字和字符,如果对我共享此mod的人有价值....
public final static char MIN_DIGIT = '0';
public final static char MAX_DIGIT = '9';
public final static char MIN_LETTER = 'A';
public final static char MAX_LETTER = 'Z';
public String incrementedAlpha(String original) {
StringBuilder buf = new StringBuilder(original);
//int index = buf.length() -1;
int i = buf.length() - 1;
//while(index >= 0) {
while (i >= 0) {
char c = buf.charAt(i);
c++;
// revisar si es numero
if ((c - 1) >= MIN_LETTER && (c - 1) <= MAX_LETTER) {
if (c > MAX_LETTER) { // overflow, carry one
buf.setCharAt(i, MIN_LETTER);
i--;
continue;
}
} else {
if (c > MAX_DIGIT) { // overflow, carry one
buf.setCharAt(i, MIN_DIGIT);
i--;
continue;
}
}
// revisar si es numero
buf.setCharAt(i, c);
return buf.toString();
}
// overflow at the first "digit", need to add one more digit
buf.insert(0, MIN_DIGIT);
return buf.toString();
}
我希望对某人有用。
答案 3 :(得分:1)
使用此代码将char值增加一个整数
int a='a';
System.out.println("int: "+a);
a=a+3;
char c=(char)a;
System.out.println("char :"+c);
答案 4 :(得分:0)
示例:
//convert a single letter string to char
String a = "a";
char tmp = a.charAt(0);
//increment char
tmp++;
//convert char to string
String b = String.valueOf(tmp);
System.out.println(b);
答案 5 :(得分:0)
假设您需要aaab
=&gt;之类的内容aaac
而非=&gt; bbbc
,这可行:
public String incremented(String original) {
StringBuilder buf = new StringBuilder(original);
int index = buf.length() -1;
while(index >= 0) {
char c = buf.charAt(i);
c++;
buf.setCharAt(i, c);
if(c == 0) { // overflow, carry one
i--;
continue;
}
return buf.toString();
}
// overflow at the first "digit", need to add one more digit
buf.insert(0, '\1');
return buf.toString();
}
这会将所有字符(实际上是char
值)视为相同,并且对于第一个平面之外的某些unicode代码点(在String中占用两个char值)失败(对于奇怪的东西)。
如果您只想将英文小写字母用作数字,您可以尝试以下变体:
public final static char MIN_DIGIT = 'a';
public final static char MAX_DIGIT = 'z';
public String incrementedAlpha(String original) {
StringBuilder buf = new StringBuilder(original);
int index = buf.length() -1;
while(index >= 0) {
char c = buf.charAt(i);
c++;
if(c > MAX_DIGIT) { // overflow, carry one
buf.setCharAt(i, MIN_DIGIT);
i--;
continue;
}
buf.setCharAt(i, c);
return buf.toString();
}
// overflow at the first "digit", need to add one more digit
buf.insert(0, MIN_DIGIT);
return buf.toString();
}
这a
=&gt; b
=&gt; c
,y
=&gt; z
=&gt; aa
=&gt; ab
。
如果要对字符串进行更多计算,请考虑使用StringBuilder(或StringBuffer进行多线程访问),而不是在String和StringBuilder之间重复复制。 或者使用一个类来做这个,比如BigInteger。