我有“Hello World”保存在一个名为hi的字符串变量中。
我需要打印出来,但要颠倒过来。
我该怎么做呢?我知道Java中已经内置了这样一个函数。
相关:用Java反向“Hello World”字符串的每一个单词
我有“Hello World”保存在一个名为hi的字符串变量中。
我需要打印出来,但要颠倒过来。
我该怎么做呢?我知道Java中已经内置了这样一个函数。
相关:用Java反向“Hello World”字符串的每一个单词
当前回答
这招对我很管用
public static void main(String[] args) {
String text = "abcdefghijklmnopqrstuvwxyz";
for (int i = (text.length() - 1); i >= 0; i--) {
System.out.print(text.charAt(i));
}
}
其他回答
public static String reverseIt(String source) {
int i, len = source.length();
StringBuilder dest = new StringBuilder(len);
for (i = (len - 1); i >= 0; i--){
dest.append(source.charAt(i));
}
return dest.toString();
}
http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm
简单的回答是,由于“代理对”问题,Java没有提供反转String的通用解决方案,您必须考虑到这个问题。
如果要求保证它适用于所有Unicode和所有语言(包括Welsh:),那么您必须自己编写。只需将字符串作为代码点进行就地数组交换:
public static String reverse(String str)
{
// You get what you ask for ;)
if (str == null) return null;
// str.length() is equal to the number of unicode code points in a string
if (str.isEmpty() || str.length() == 1) return str;
final int[] codePoints = str.codePoints().toArray();
final int len = codePoints.length;
// swap in place
for(int i = 0; i < codePoints.length/2; i++)
{
int tmp = codePoints[i];
codePoints[i] = codePoints[len-i-1];
codePoints[len-i-1] = tmp;
}
return new String(codePoints,0,len);
}
如果您通过使用String.getBytes()来做到这一点,那么所有的字节都将被反转,这将反转所有的UTF-8编码,并且任何使用不是int编码点的字符的尝试都将失败,任何“星体平面”编码点(BMP之外的那些)。
作为一个通解,这是相当有效的,但它非常简单,并保证适用于任何字符串,这可能是你想要的“通解”。
唯一的问题是,如果你从UTF8/16编码文件中读取字符串,你可能在开始时有一个BOM,但这超出了问题的范围。
蓝
我尝试了,只是为了好玩,通过使用一个堆栈。下面是我的代码:
public String reverseString(String s) {
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
stack.push(s.charAt(i));
}
while (!stack.empty()) {
sb.append(stack.pop());
}
return sb.toString();
}
反转String的一种自然方法是使用StringTokenizer和堆栈。Stack是一个实现易于使用的后进先出(LIFO)对象堆栈的类。
String s = "Hello My name is Sufiyan";
把它放在堆栈前面
Stack<String> myStack = new Stack<>();
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens()) {
myStack.push(st.nextToken());
}
反向打印堆栈
System.out.print('"' + s + '"' + " backwards by word is:\n\t\"");
while (!myStack.empty()) {
System.out.print(myStack.pop());
System.out.print(' ');
}
System.out.println('"');
它会得到你输入的值,并反向返回;)
public static String reverse (String a){
char[] rarray = a.toCharArray();
String finalvalue = "";
for (int i = 0; i < rarray.length; i++)
{
finalvalue += rarray[rarray.length - 1 - i];
}
return finalvalue;
}