Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用它分割字符串';java中的数据类型是什么?_Java_Split - Fatal编程技术网

如何用它分割字符串';java中的数据类型是什么?

如何用它分割字符串';java中的数据类型是什么?,java,split,Java,Split,在我的Spigot插件中,玩家输入一个命令,如/logging chat clear 1d。参数编号2(第3个参数)为1d,需要分析日期(例如1d=1天,15m=15分钟)。我已经找到了解析部分,但是当我尝试解析多个数字(1对11)时,我的解析不起作用,因为我是基于字符进行拆分的,而不是基于它是整数还是字符串。我做String[]part=arg3.split(“”)然后将第一个字符作为数字,第二个字符作为字符串。 我如何才能做到这一点,但要进行拆分才能拥有多个数字?(正则表达式?使用正则表达式

在我的Spigot插件中,玩家输入一个命令,如
/logging chat clear 1d
。参数编号2(第3个参数)为
1d
,需要分析日期(例如1d=1天,15m=15分钟)。我已经找到了解析部分,但是当我尝试解析多个数字(1对11)时,我的解析不起作用,因为我是基于字符进行拆分的,而不是基于它是整数还是字符串。我做
String[]part=arg3.split(“”)
然后将第一个字符作为数字,第二个字符作为字符串。 我如何才能做到这一点,但要进行拆分才能拥有多个数字?(正则表达式?使用正则表达式

Pattern pattern = Pattern.compile("(\\d+)([a-zA-Z]+)");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
    String number = matcher.group(1);
    String letters = matcher.group(2);
}

如果
日期
参数始终是
字符串
末尾的单个
字符
,则可以简单地执行此操作

public static String[] splitDate(String date)
{
    int length = date.length();
    String[] results = {date.substring(0, length - 1), date.substring(length - 1)};
    return results;
}
输入
110w
将返回
{110,w}
数组


这种方法只是根据
字符串的长度使用
子字符串
,并将数字从最后一个字符中分离出来。

为什么不干脆将其设置为
1_d
15_m
,让生活更轻松呢?(在分隔符上拆分)因为这是一个广泛的项目,我需要分析所有可能的日期,所以我按编号进行分析。例如
20w
为20周,
210w
为210周。我不能只解析某些步骤。我的意思是用分隔符
进行输入,然后使用
.split(“'''
)。您可以将其视为
20_w
,并且在拆分后数组将包含
{20,w}
。这是一个好主意,但我不希望有一个特定的分隔符,而是将参数保持在尽可能小的大小。第二个参数始终是1个字母还是可以更大?(使用
try
catch
异常
控制程序流的
w
d
)是一种不好的方法。使用
Character.isDigit()
将是确定字符是否为数字的更好方法。很好!我从来不知道这种方法的存在。已更新。您使用的第一个方法也有效,但我必须对其进行一些调整。我尝试过此方法,但它给了我
,原因是:java.lang.IllegalStateException:找不到匹配项
是的,对不起,我忘了调用
matcher.find()
。我编辑了它。
Pattern pattern = Pattern.compile("(\\d+)([a-zA-Z]+)");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
    String number = matcher.group(1);
    String letters = matcher.group(2);
}
public static String[] splitDate(String date)
{
    int length = date.length();
    String[] results = {date.substring(0, length - 1), date.substring(length - 1)};
    return results;
}