Java字符串->;两个数字
我希望执行的操作是:Java字符串->;两个数字,java,regex,Java,Regex,我希望执行的操作是: String "32.63578..." 致: 类似于Python中的以下内容: split = str.find('.')+2 float = str[:split] long = str[split:] 我是Java新手,所以我开始尝试查找等价物,但它似乎比正则表达式更复杂?除非python有更多类似的函数,而不是拆分成一个字符数组,并在上面反复迭代?如果您想清楚地分解这两部分,可以使用 但是,如果您希望像示例中那样使用尾随小数,您可能需要执行以下操作: Strin
String "32.63578..."
致:
类似于Python中的以下内容:
split = str.find('.')+2
float = str[:split]
long = str[split:]
我是Java新手,所以我开始尝试查找等价物,但它似乎比正则表达式更复杂?除非python有更多类似的函数,而不是拆分成一个字符数组,并在上面反复迭代?如果您想清楚地分解这两部分,可以使用
但是,如果您希望像示例中那样使用尾随小数,您可能需要执行以下操作:
String str = "32.63578...";
String substr1, substr2;
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == '.')
{
substr1 = str.substring(0, i + 3);
substr2 = str.substring(i + 3, str.length());
break;
}
}
//convert substr1 and substr2 here
String str=“32.63578…”;
字符串substr1,substr2;
对于(int i=0;i
如果您想干净地断开这两部分,可以使用
但是,如果您希望像示例中那样使用尾随小数,您可能需要执行以下操作:
String str = "32.63578...";
String substr1, substr2;
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == '.')
{
substr1 = str.substring(0, i + 3);
substr2 = str.substring(i + 3, str.length());
break;
}
}
//convert substr1 and substr2 here
String str=“32.63578…”;
字符串substr1,substr2;
对于(int i=0;i
使用索引
和子字符串
方法:
String str = "32.63578";
int i = str.indexOf(".") + 3;
String part1 = str.substring(0, i); // "32.63"
String part2 = str.substring(i); // "578"
float num1 = Float.parseFloat(part1); // 32.63
long num2 = Long.parseLong(part2); // 578
使用
indexOf
和substring
方法:
String str = "32.63578";
int i = str.indexOf(".") + 3;
String part1 = str.substring(0, i); // "32.63"
String part2 = str.substring(i); // "578"
float num1 = Float.parseFloat(part1); // 32.63
long num2 = Long.parseLong(part2); // 578
正则表达式替代:
String str = "32.63578";
String[] parts = str.split("(?<=\\.\\d{2})");
System.out.println(parts[0]); // "32.63"
System.out.println(parts[1]); // "578"
String str=“32.63578”;
String[]parts=str.split((?正则表达式替代:
String str = "32.63578";
String[] parts = str.split("(?<=\\.\\d{2})");
System.out.println(parts[0]); // "32.63"
System.out.println(parts[1]); // "578"
String str=“32.63578”;
String[]parts=str.split(“(?String s=“32.63578”;
Pattern Pattern=Pattern.compile((?\\d{1,10}.\\d{1,2})(?\\d{1,10})”;
匹配器匹配=模式匹配器;
if(match.find()){
String start=match.group(“start”);
字符串结尾=match.group(“结束”);
系统输出打印项次(开始);
系统输出打印项次(结束);
}
String s=“32.63578”;
Pattern Pattern=Pattern.compile((?\\d{1,10}.\\d{1,2})(?\\d{1,10})”;
匹配器匹配=模式匹配器;
if(match.find()){
String start=match.group(“start”);
字符串结尾=match.group(“结束”);
系统输出打印项次(开始);
系统输出打印项次(结束);
}
请参见java.substring方法..然后是Float.parseFloat和Long.parseLong方法我猜在这里,但看起来你实际上想要一个大的十进制数。@StinePikesubstring
没有帮助,我不知道索引,需要“找到”小数点。我强烈建议学习使用Javadocs。但是你需要的方法是indexOf
和substring
。我也在猜测,但我不这么认为。它们是独立的数字,不相关,从字符串中读取。请参见java.substring方法..然后是Float.parseFloat和Long.parseLong方法我在猜测,但看起来你实际上想要一个大十进制。@StinePikesubstring
没有帮助,我不知道索引,需要“找到”小数点。我强烈建议您学习使用Javadocs。但是您需要的方法是indexOf
和substring
。我也在猜测,但我不这么认为。它们是独立的数字,不相关,从字符串读取。是的。然后将这些字符串转换为所需的数字类型。@Floris,我添加了convrt部分。谢谢你的评论。@falsetru很高兴能帮你做出一个好的答案,好到足以得到我的选票!如果你要给出两个答案,你真的应该把它们作为两个单独的答案。有人可能希望向上投票一个,向下投票另一个。@DavidWallace,我明白了。删除了正则表达式替代项。是的。然后转换这些字符串“s到所需的数字类型。@Floris,我添加了转换部分。谢谢您的评论。@falsetru很乐意帮助做出一个足够好的答案来获得我的选票!如果您要给出两个答案,您应该将它们作为两个单独的答案。有人可能希望向上投票一个,向下投票另一个。@DavidWallace,我明白了。删除了常规的exp。”另一种选择。@Floris你确定吗?@Floris它更干净,但效率可能完全相同。毕竟,获取字符索引意味着某种程度上的循环。@DavidWallace-可能不是在执行时间,而是在使用的字符数上。我认为在函数“恰到好处”时使用它是一种很好的做法为了这份工作。我同意不做这个被调查者所做的事情是一个很好的做法。我只是看不出它的效率比使用indexOf
@Floris的效率低。你确定吗?@Floris它更干净,但效率可能完全相同。毕竟,获取字符的索引意味着某种程度上的循环。@DavidWallace-可能不在e中执行时间,但使用的字符数。我认为在函数“恰好适合”工作的情况下使用函数是一种良好的做法。我同意不做该受访者所做的事情是一种良好的做法。我只是看不出它的效率比使用indexOf
低。