如何在Java中使用正则表达式模式在字符串的最后一个字母之前插入-符号
Posted
技术标签:
【中文标题】如何在Java中使用正则表达式模式在字符串的最后一个字母之前插入-符号【英文标题】:how to insert a - symbol before the last alphabet in a string using regex pattern in java 【发布时间】:2020-10-20 06:28:33 【问题描述】:嗨,我有一个值,例如 023A,我需要通过删除前导 0 将其替换或格式化为 23-A,它是 123A,它应该是 123-A 任何人都可以在 java regex 中帮助我如何做到这一点?
【问题讨论】:
这里的替换逻辑请描述的更清楚。 input.replaceAll("^(0*)(.*)(\\w)$", "$2-$3"); 假设感兴趣的字符串由一个或多个数字后跟一个大写字母组成,您可以将正则表达式\b0*(\d+)([A-Z])\b
的匹配替换为"$1-$2"
、$1
和$2
捕获组 1 和 2 的内容。ref
@CarySwoveland 添加评论链接的工具提示说:避免在 cmets 中回答问题。我认为您的评论是一个很好的答案。
【参考方案1】:
我已经编写了一些特定于您所要求的模式的代码,希望对您有所帮助。
代码:
import java.util.Scanner;
public class Demo
static String format(String str)
String string = "";
try
//remove every non-numerical character at the start of string, if there is
//remove every zero at the start of string
while(str.startsWith("0") || Character.isLetter(str.charAt(0)))
str = str.substring(1);
//Gets the index of firstmost non-numerical character
int index = 0;
boolean valueFound = false;
for(int i = 0; i <= str.length() -1; i++)
if(Character.isLetter(str.charAt(i)))
index = i;
valueFound = true;
break;
if(valueFound)
string = str.replaceFirst(String.valueOf(str.charAt(index)), "-" +
String.valueOf(str.charAt(index)));
catch(Exception ex)ex.printStackTrace();
return string;
public static void main(String[] args)
Scanner in = new Scanner(System.in);
System.out.print("Input a combination : ");
String line = in.nextLine();
System.out.println("Input :" + line);
System.out.println("Output :" + format(line));
测试 1:
Input a combination : 023A
Input :023A
Output :23-A
测试 2:
Input a combination : 123A
Input :123A
Output :123-A
【讨论】:
以上是关于如何在Java中使用正则表达式模式在字符串的最后一个字母之前插入-符号的主要内容,如果未能解决你的问题,请参考以下文章