[英]How to replace all matching integer characters with asterisks
我是Java的新手,我的代碼需要一些幫助。
我正在嘗試用星號(*)替換所有等於輸入的第一個字符的字符(第一個字符除外)。
例:
輸入:1231231231
-輸出:123 * 23 * 23 *
這是我的代碼:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNextInt())
{
int inputLine = in.nextInt();
System.out.println(processLine(inputLine));
}
}
public static long processLine(int inputLine) {
String convert = Integer.toString(inputLine);
String firstDigit = convert.substring(0,1);
String filter = convert.replaceAll(firstDigit,"*");
long result = Long.parseLong(filter);
return result;
}
}
但它返回一條錯誤消息:
線程“主”中的異常java.lang.NumberFormatException:對於輸入字符串:“ * 23 * 23”
有誰知道如何使這項工作?
在調用replaceAll
之前,需要在第一個字符之后獲取所有內容的substring
。 例如,
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int inputLine = in.nextInt();
String v = Integer.toString(inputLine), f = v.substring(0, 1);
System.out.println(f + v.substring(1).replaceAll(f, "*"));
}
您要使用以下正則表達式來匹配替換項:
(?<!^)1
說明: (?<!^)
:如果字符不在行首。 (即,行首的負回溯)
1
:匹配1。
全面電話要求您更換:
public static String processLine(int inputLine) {
String convert = Integer.toString(inputLine);
return inputLine.replaceAll("(?<!^)1", "*");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.