[英]How to split a string into 2 equal parts in Java
我想像这样划分一个字符串:
String = "Titanic";
分成两个相等长度的字符串,如果它不能被 2 整除,它将在第一部分或第二部分有 1 个字母或额外的字母。 像这样
//if dividle by 2
Str1 = "BikG";
Str2 = "amer";
//if it isnt dividle by 2
Str1 = "Tita";
Str2 = "nic";
例如,您可以这样做:
String base = "somestring";
int half = base.length() % 2 == 0 ? base.length()/2 : base.length()/2 + 1;
String first = base.substring(0, half);
String second = base.substring(half);
简单地说,当n
是字符串的长度时,如果n
可被 2 整除,则将字符串拆分为n/2
,否则拆分为n/2 + 1
,以便第一个 substring 比第二个字符长一个字符。
您如何以相同的要求除以奇数,例如15
?
您将15 / 2
的结果存储到一个int
变量中
int half = 15 / 2
这给了你7
。 根据您的要求,您需要将1
添加到half
以使前半部分(即8
),剩下的一半将是15 - 8 = 7
。
另一方面,如果是偶数,您只需将其除以2
即可得到两半。
对于String
,您也必须应用相同的逻辑。 下面给出一个演示:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int half;
String str1 = "Titanic";
half = str1.length() / 2;
String str1Part1 = str1.substring(0, half + 1);
String str1Part2 = str1.substring(half + 1);
System.out.println(str1Part1 + ", " + str1Part2);
String str2 = "HelloWorld";
half = str2.length() / 2;
String str2Part1 = str2.substring(0, half);
String str2Part2 = str2.substring(half);
System.out.println(str2Part1 + ", " + str2Part2);
Scanner in = new Scanner(System.in);
do {
System.out.print("Enter a string: ");
String str = in.nextLine();
half = str.length() / 2;
System.out.println(str.length() % 2 == 1 ? str.substring(0, half + 1) + ", " + str.substring(half + 1)
: str.substring(0, half) + ", " + str.substring(half));
System.out.print("Enter Y to continue or any input to exit: ");
} while (in.nextLine().toUpperCase().equals("Y"));
}
}
示例运行:
Tita, nic
Hello, World
Enter a string: Arvind
Arv, ind
Would you like to continue? [Y/N]: y
Enter a string: Kumar
Kum, ar
Would you like to continue? [Y/N]: Y
Enter a string: Avinash
Avin, ash
Would you like to continue? [Y/N]: n
笔记:
%
是一个模运算符。String
的substring
函数的更多信息。您可以为此目的使用 String.substring() :
String s = "Titanic";
int half = (s.length()+1)/2;
String part1 = s.substring(0, half);
String part2 = s.substring(half);
System.out.println(part1); // Prints: Tita
System.out.println(part2); // Prints: nic
如果发生这种情况, (s.length()+1)/2
将自动截断0.5
,因为除法是在整数之间进行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.