Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 - Fatal编程技术网

Java 如何从用户处替换字符串后跟格式?

Java 如何从用户处替换字符串后跟格式?,java,Java,或 我尽我所能尝试使用另一种语言(python、js) 但它不起作用 String a=“123456”; 字符串b=“xxx-xx-x”; char[]c_arr=b.toCharArray(); 对于(int i=0;i

我尽我所能尝试使用另一种语言(python、js) 但它不起作用

String a=“123456”;
字符串b=“xxx-xx-x”;
char[]c_arr=b.toCharArray();
对于(int i=0;i
这里的代码将解决您的问题。发生的情况是,您的计数器变量超过了
a
字符串的长度。要解决这个问题,请使用一个单独的计数器,该计数器遍历字符串,该字符串随着字符的使用而递增

String a = "123456";
String b = "xxx-xx-x";

char[] c_arr = b.toCharArray();

for (int i = 0; i < b.length(); i++) {
    if(c_arr[i] != '-'){
        c_arr[i] = a.charAt(i);
    } else {
        c_arr[i+1] = a.charAt(i);
    }
    System.out.println(c_arr);
}
String a=“123456”;
字符串b=“xxx-xx-x”;
char[]cArray=b.toCharArray();
int aPos=0;//创建单独的计数器
对于(int i=0;i

但是,这仍然可能会中断,因为需要填充的
b
中声明的位置可能多于
a
中的可消耗字符。如果输入不匹配,我建议执行运行时检查以引发异常。

可能重复的@Ele-it差异导致我的代码具有来自用户输入的格式,因为您的
b
字符串比
a
字符串长。
如果(cArray[I]='-')继续;代码的其余部分类似于if(cArray[i]='-'){continue;}else{rest of code}
。在这种情况下,我们可以将当前代码重写为
if(cArray[i]='x'){cArray[i]=a.charAt(aPos++;}
-System.out。。。。也应该放在循环之外。是的,如果我们没有显示工作状态。OP在里面有打印声明,因为他想知道发生了什么。我把它放在里面,好让他看看发生了什么事。
Input > 
user_input = 123456
format = "x-xx-x-x-x"

Output >
1-23-4-5-6
String a = "123456";
String b = "xxx-xx-x";

char[] c_arr = b.toCharArray();

for (int i = 0; i < b.length(); i++) {
    if(c_arr[i] != '-'){
        c_arr[i] = a.charAt(i);
    } else {
        c_arr[i+1] = a.charAt(i);
    }
    System.out.println(c_arr);
}
String a = "123456";
String b = "xxx-xx-x";

char[] cArray = b.toCharArray();
int aPos = 0; // create separate counter

for (int i = 0; i < b.length(); i++) {
    if (cArray[i] == '-') continue; // if skipping, do not increment aPos, continue
    cArray[i] = a.charAt(aPos);
    aPos++; // add counter when we used the charAt

    System.out.println(cArray);
}