gpt4 book ai didi

java - 在两个奇数之间插入破折号

转载 作者:行者123 更新时间:2023-11-29 05:06:18 31 4
gpt4 key购买 nike

伙计们。在我的程序中,我接受了用户输入的 String 类型的数字,并在 两个奇数 之间放置了 破折号。例如:

Input = 99946    Output = 9-9-946
Input = 56730 Output = 567-30

但是在我的代码中,例如,如果我编写 9933444 那么我得到的输出是:9-9-9-3-3-3-344444。它正确地用破折号分隔奇数,但也添加了额外的数字。什么可能导致此错误?

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

public class DashInsert {

public static void main(String[] args)
{
Scanner kbd = new Scanner(System.in);
System.out.println("Enter the numbers: ");
String myString = kbd.nextLine();
char[] numbers = myString.toCharArray();
String result = "";

for(int i = 1; i < numbers.length; i++)
{
int value1 = Character.getNumericValue(numbers[i]);
int value2 = Character.getNumericValue(numbers[i-1]);


if(value1 % 2 != 0 && value2 % 2 != 0)
{
result += numbers[i-1] + "-" + numbers[i] + "-";
}
else
result += numbers[i-1] + "" + numbers[i];
}
System.out.println(result);

}

}

最佳答案

有一个简单的单行解决方案:

str = str.replaceAll("(?<=[13579])(?=[13579])", "-");

这通过匹配奇数 之间 并将(零宽度)匹配替换为破折号来实现。正则表达式是向后看和向前看。

通过捕获奇数位并使用反向引用将它们放回原处,无需环顾四周即可完成:

str = str.replaceAll("([13579])([13579])", "$1-$2");

两种解决方案实现相同的结果。

关于java - 在两个奇数之间插入破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270866/

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