gpt4 book ai didi

Java 数组 - split() 与用户指定的分隔符

转载 作者:行者123 更新时间:2023-12-01 16:55:55 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的程序,它接受两个用户输入:一个要拆分的字符串,以及一个指定一个或多个分隔符的字符串。该程序应该打印一个由分割子字符串和分隔符组成的字符串数组。我必须实现 public static String[] split(String s, String regex)

如果要分割的字符串是

cd#34#abef#1256

我当前的代码正确输出

[cd, 34, abef, 1256]

我需要输出的是

[cd, #, 34, abef, #, 1256]

如果要分割的字符串有两个用户指定的分隔符怎么办

cd?34?abef#1256

我怎样才能将其拆分,使其看起来像

[cd, ?, 34, ?, abef, #, 1256]

我之前研究过的问题都没有使用用户指定的字符串和分隔符。

这是我当前的代码:

import java.util.Arrays;
import java.util.Scanner;

public class StringSplit
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter a string: ");
String str = scan.next();
System.out.print("Specify delimiter(s): ");
String del = scan.next();
String[] result = split(str, del);
System.out.print(Arrays.toString(result));
}

public static String[] split(String s, String regex)
{
String[] myString = s.split(regex);
return myString;
}
}

最佳答案

您可以使用此基于前向和后向的正则表达式进行拆分:

(?<=#)|(?=#)

这意味着在下一个字符为 # 或上一个字符为 # 的位置进行拆分

对于多个分隔符:

(?<=[?#])|(?=[?#])

RegEx Demo

您的 Java 方法可以是这样的:

public static String[] split(String s, String d) {
String del = Pattern.quote(d);
String[] myString = s.split("(?<=[" + del + "])|(?=[" + del + "])");
return myString;
}

并将其称为:

System.out.println(
Arrays.toString(split("aa{bb}(cc)[dd]ee#ff...gg?hh*+ii", "#.?*+-[](){}"))
);

输出:

[aa, {, bb, }, (, cc, ), [, dd, ], ee, #, ff, ., ., ., gg, ?, hh, *, +, ii]

关于Java 数组 - split() 与用户指定的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32980275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com