【问题标题】:Interchange character in String字符串中的交换字符
【发布时间】:2018-10-06 16:44:15
【问题描述】:

我有一个字符串。

String word = "Football";

我需要将字符串的第一个字符放在字符串的最后。这是我的解决方案。

public class charToString{
    public static void main(String[] args){
        String testString = "Football";
        char[] stringToCharArray = testString.toCharArray();

        for(int i=0;i<(stringToCharArray.length-1);i++){
            char temp = stringToCharArray[i];
            stringToCharArray[i]= stringToCharArray[i+1];
            stringToCharArray[i+1] = temp;

        }//end of for

        String resulT = new String(stringToCharArray); //result with desired output
        System.out.println(resulT);
    }// end of main
}

这是完成我的任务的有效方式吗?或者你能建议我一个更有效的方法吗?

【问题讨论】:

  • 它可以更容易。 String str2 = testString.substring(1) + testString.substring(0,1)

标签: java string character


【解决方案1】:

您使用子字符串的解决方案很好,但这是使用正则表达式的替代解决方案:

String word = "Football";
String result = word.replaceAll("^(.)(.*)$", "$2$1");
System.out.println(result);

【讨论】:

    【解决方案2】:

    你可以使用子字符串:

    testString.substring(1) + testString.substring(0, 1)
    

    【讨论】:

    • 它为我返回ootballF
    • @NicholasK:我认为你犯了一个错误:以上应该可以工作(用jshell测试)。
    【解决方案3】:

    比子串和连接更有效的解决方案是使用StringBuilder:

    String result =
        new StringBuilder(word.length())
            .append(word, 1, word.length())
            .append(word, 0, 1) // or .append(word.charAt(0))
            .toString();
    

    这只是避免从word 创建子字符串。

    【讨论】:

      【解决方案4】:

      为什么不直接

      word = word.substring(1, word.length()) + word.charAt(0);
      

      编辑:

      或者只使用substring 不带长度。

      word = word.substring(1) + word.charAt(0);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多