我了解如何将单个char
转换为int
,但如何将String
转换为char
,以便我可以转换{{1转到char
s?例如,对于字符串int
:
hello
输出应该可以很容易地将五个字母chars[1] = h => 104
chars[2] = e => 101
chars[3] = l => 108
chars[4] = l => 108
chars[5] = o => 111
转换为五个单独的整数,每个整数代表一个字符,然后将它们转换回String
并将它们打印为单个char
再次。
答案 0 :(得分:1)
您可以尝试这样:
String s = "hello";
char[] data = s.toCharArray(); // returns a length 5 char array ( 'h','e','l','l','o' )
现在您可以调用此函数将其转换为int。
int charToInt(char []data,int start,int end) throws NumberFormatException
{
int result = 0;
for (int i = start; i < end; i++)
{
int digit = (int)data[i] - (int)'0';
if ((digit < 0) || (digit > 9)) throw new NumberFormatException();
result *= 10;
result += digit;
}
return result;
}
答案 1 :(得分:0)
您可以在StringBuilder
类的构造函数参数中传递给定字符串,并使用codePointAt(int)
方法。它返回指定索引处的字符的ASCII值。
StringBuilder
中还有其他有用的方法,例如codePointBefore(int)
和appendCodePoint(int)
,它们允许您查看字符的代码点,并将带有指定代码点的字符附加到{分别为{1}}。
答案 2 :(得分:0)
使用getBytes()
,您可以获得byte[]
,其中包含String
中每个字母的数字代表:
byte[] text = "hello".getBytes();
for(byte b : text) {
System.out.println(b);
}
这给出了与结果相同的结果:
String text = "hello";
for(char c : text.toCharArray()) {
System.out.println((int) c);
}
这是我可能想到实现这一目标的最简单方法。将其转换回String:
byte[] byteArray = "hello".getBytes();
String string = new String(byteArray);
答案 3 :(得分:0)
我在此假设每个<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
的{{1}}值应与该字符的Unicode code point对应。如果是这样,那么解决方案是微不足道的:您只需要在int
和char
类型之间进行类型转换。这是因为在Java中,char
实际上是Integral type,就像int
一样。 char
类型可以包含表示16位Unicode字符(int
到char
或'\u0000'
)的代码点的整数值。
解决方案首先是使用toCharArray
将'\uffff'
转换为0...65535
。然后,只需将每个String
转换为char[]
即可获得Unicode代码点值:
char
同样,强制转换为int
以获取值:
int capitalACodePoint = (int)'A';
一个可运行的例子:
char
打印出来
char capitalA = (char) 65;
此代码也适用于非ASCII字符。将输入更改为
String input = "hello";
List<Integer> codePoints = new ArrayList<>();
for (char c : input.toCharArray()) {
int codePoint = (int)c;
codePoints.add(codePoint);
System.out.println(String.format(
"char$ %d %s equals %d",
codePoints.size(), c, codePoint));
}
StringBuilder sb = new StringBuilder();
for (int codePoint : codePoints) {
sb.append((char) codePoint);
}
System.out.println(sb);
打印出来
char$ 1 h equals 104
char$ 2 e equals 101
char$ 3 l equals 108
char$ 4 l equals 108
char$ 5 o equals 111
hello