将一个字符串分成两部分

问题描述:

我正在制作一个新的转换软件来隐藏消息(为了好玩)。我做了一个二进制和十进制转换类,我的想法是,用户输入字符串,它将全部转换为二进制格式。然后将其分成两半,将一半转换为十进制,然后再次将字符串重新组合为二进制和十进制的混合。在其他版本中,我会添加更多转化次数,更多分割次数,也可能会转换成语言。我需要把弦分成两半。这是到目前为止我的代码::将一个字符串分成两部分

public ray() { 
    Scanner in = new Scanner(System.in); 

    while (true) { 
     System.out.println("Please input the text you wish to encode!"); 
     System.out.println("Type '#' to quit the Software."); 
     String s1 = in.nextLine(); 
     if ("#".equalsIgnoreCase(s1)) { 
      System.out.println("Goodbye, hope you enjoyed RAYConversion v1.0 Alpha."); 
      // close software 
     } 

     // convert all to binary 
     binary Binary = new binary(); 

     //what i need to do is split stirng s1 in half, make it into different strings. Then I will convert 
     //the two strings to binary and decimal. I made a converter for that. 

    } 
} 
+0

如何将字符串“AAA”分成两半? – Tunaki

+0

请使用命名约定。一个名为'ray'的类应该被称为'Ray',而'binary Binary'应该是'Binary binary' - 具有一个'Binary'类和一个变量'binary'。另外,考虑到你在一个只有该字符的String上调用equalsIgnoreCase(),什么是“#”的大小写? – bcsb1001

+0

我对Java有点新鲜,它适用于我,equalsIgnoreCase可以等于我知道,我习惯于使用Bukkit API大声笑,在那里我使用equalsIgnoreCase命令。和AAA,下半场将有AA和第一将有A. – JustRayz

final int mid = s1.length()/2; //get the middle of the String 
String[] parts = {s1.substring(0, mid),s1.substring(mid)}; 
System.out.println(parts[0]); //first part 
System.out.println(parts[1]); //second part 

我想这将让你做你想要达到的目标:

附:请注意,对于字符数为odd的字符串,第二个字符串将获得额外字符的好处。

创建这样的方法:

public static String substring(int a, int b, String temp) { 
    String a = ""; 
    for(int i = a; i<b; i++) { 
     char ch1 = temp.charAt(i); 
     a = a + ch1; 
    } 
    return a; 
} 

,并在您main函数,调用该方法如下:

String s1a = substring(0, (s1.length()/2), s1); 
String s1b = substring((s1.length()/2),s1.length(), s1); 
+0

非常有帮助,ty!但是我可能会使用另一个,因为它更合理,代码更小。不管怎么说,还是要谢谢你! – JustRayz

+0

编辑并改进了我的答案。我想这会让你更容易理解函数中发生的事情。 –

您可以使用Java的子功能将其分成两半分:

String s1a = s1.substring(0, (s1.length()/2)); 
String s1b = s1.substring((s1.length()/2); 

试试这个:

int len = whole.length(); 
String a = whole.substring(0, whole.length/2), b = whole.substring(whole.length/2); 

它使用substring()方法。在长度为奇数的String的情况下,下半部分将长一个字符。