将文本字符串中的字符移动指定的位置数

时间:2014-11-30 15:21:25

标签: java string

我是编程新手,我正在尝试编写一个程序,将文本字符串中的字符移动到指定的位置。

程序必须包含一个方法,其输入将是文本字符串(类型字符串)和位置数(类型int)。输出将是一个字符移位的字符串。

例如,移动4个位置:

rabbit eats a carrot
it eats a carrotrabb

现在我有了这个部分代码。我可以删除第一个字符,但我不知道如何将它们放在本文末尾。我该怎么做?

public static void main(String[] args) {
    System.out.println("enter the text: ");
    Scanner cti = new Scanner(System.in);     
    String a = cti.nextLine();
    System.out.println("enter number of positions= ");
    int b = cti.nextInt();
    char firstLetter = a.charAt(0);
    b--;
    a = a.substring(b); 
    String m = a + firstLetter ;
    System.out.println("now it is "+ m);
}

5 个答案:

答案 0 :(得分:1)

public String foo(String s, int n) {
    String s2 = s.substring(0, n);
    s = s.substring(n) + s2;
    return s;
}

你可以对此进行一些验证,如空字符串或n小于s.length()等。

答案 1 :(得分:1)

如果你使用正则表达式,它只是一行:

return str.replaceAll("^(.{" + n + "})(.*)", "$2$1");

答案 2 :(得分:0)



import java.util.*;
public class JavaApplication5 {
    public static void main(String[] args) {
        System.out.println("enter the text: ");
       Scanner cti = new Scanner(System.in);     
       String a = cti.nextLine();
        System.out.println("enter number of positions= ");
        int b = cti.nextInt();
       String firstPart = a.substring(0,b);   // line 1
       b--;
       a = a.substring(b); 
       String m = a + firstPart ;             // line 2
        System.out.println("now it is "+ m);
    }
    
}




请在注释第1行和第2行标记的声明中查看上述更改。

在第1行中,我们得到字符串的第一部分,在第2行,在第二个字符串部分的末尾添加。

答案 3 :(得分:0)

最好使用模数运算符来计算班次数。当初始移位数大于字符串长度时。检查一下:

public String shift(String string,int n){
    int nshift = string.length() < n ? n%string.length() : n ;
    String a = string.substring(0,nshift);
    return string.substring(nshift) + a ;
}

答案 4 :(得分:0)

还有一个版本。所有工作基本上都在这里完成:

String result = new StringBuilder(a).delete(0, b).append(a.substring(0,b)).toString();

无论如何,完整的代码是:

import java.util.*;
public class ShiftLetters {
    public static void main(String[] args) {
        System.out.print("enter the text: ");
        Scanner cti = new Scanner(System.in);     
        String a = cti.nextLine();
        System.out.print("Enter number of positions: ");
        int b = cti.nextInt();

        String result = new StringBuilder(a).delete(0, b).append(a.substring(0,b)).toString();

        System.out.println(result);
    }    
}

此外,您可能希望更准确地使用缩进样式来提高可读性。