繁体   English   中英

如何在 Java 中将字符串分成两等份

[英]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

笔记:

  1. %是一个模运算符。
  2. 检查String substring(int beginIndex, int endIndex)String substring(int beginIndex)以了解有关Stringsubstring函数的更多信息。
  3. 查看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html了解三元运算符。

您可以为此目的使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM