我有“Hello World”保存在一个名为hi的字符串变量中。
我需要打印出来,但要颠倒过来。
我该怎么做呢?我知道Java中已经内置了这样一个函数。
相关:用Java反向“Hello World”字符串的每一个单词
我有“Hello World”保存在一个名为hi的字符串变量中。
我需要打印出来,但要颠倒过来。
我该怎么做呢?我知道Java中已经内置了这样一个函数。
相关:用Java反向“Hello World”字符串的每一个单词
当前回答
它是非常简单的在最少的代码行
public class ReverseString {
public static void main(String[] args) {
String s1 = "neelendra";
for(int i=s1.length()-1;i>=0;i--)
{
System.out.print(s1.charAt(i));
}
}
}
其他回答
简单的回答是,由于“代理对”问题,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 stringReverse(String string) {
if (string == null || string.length() == 0) {
return string;
}
return stringReverse(string.substring(1)) + string.charAt(0);
}
public static void main(String[] args) {
String str = "Prashant";
int len = str.length();
char[] c = new char[len];
for (int j = len - 1, i = 0; j >= 0; j--, i++) {
c[i] = str.charAt(j);
}
str = String.copyValueOf(c);
System.out.println(str);
}
使用charAt()方法
String name = "gaurav";
String reversedString = "";
for(int i = name.length()-1; i>=0; i--){
reversedString = reversedString + name.charAt(i);
}
System.out.println(reversedString);
使用toCharArray()方法
String name = "gaurav";
char [] stringCharArray = name.toCharArray();
String reversedString = "";
for(int i = stringCharArray.length-1; i>=0; i--) {
reversedString = reversedString + stringCharArray[i];
}
System.out.println(reversedString);
使用Stringbuilder的reverse()方法
String name = "gaurav";
String reversedString = new StringBuilder(name).reverse().toString();
System.out.println(reversedString);
检查https://coderolls.com/reverse-a-string-in-java/
我通过以下两种方式来做到这一点:
反向字符串字符:
public static void main(String[] args) {
// Using traditional approach
String result="";
for(int i=string.length()-1; i>=0; i--) {
result = result + string.charAt(i);
}
System.out.println(result);
// Using StringBuffer class
StringBuffer buffer = new StringBuffer(string);
System.out.println(buffer.reverse());
}
反向字符串:
public static void reverseStringByWords(String string) {
StringBuilder stringBuilder = new StringBuilder();
String[] words = string.split(" ");
for (int j = words.length-1; j >= 0; j--) {
stringBuilder.append(words[j]).append(' ');
}
System.out.println("Reverse words: " + stringBuilder);
}