使用正则表达式替换Java字符串
我有一个字符串,它的值是地址行1,地址行2。。。等 如果字符串中有任何数值,我想添加一个空格,如 地址行1,地址行2 我可以这样使用contains和replace使用正则表达式替换Java字符串,java,regex,Java,Regex,我有一个字符串,它的值是地址行1,地址行2。。。等 如果字符串中有任何数值,我想添加一个空格,如 地址行1,地址行2 我可以这样使用contains和replace String sample = "Address Line1"; if (sample.contains("1")) { sample = sample.replace("1"," 1"); } 但是如何使用regex实现这一点呢?要使用regex,您将需要replaceAll而不是replace方法: sample =
String sample = "Address Line1";
if (sample.contains("1")) {
sample = sample.replace("1"," 1");
}
但是如何使用regex实现这一点呢?要使用regex,您将需要replaceAll而不是replace方法:
sample = sample.replaceAll("\\d+"," $0");
作为正则表达式,您可以使用
\\d+匹配一个或多个连续数字的任意组。我们这里需要所有的连续数字,因为只有一个匹配的数字才能从foo123创建类似foo1、2、3的内容
?首先创建一个模式对象,该对象包含您要搜索的内容,并在您的案例中进行编译。模式对象将如下所示:-
Pattern p=Pattern.compile("1");
import java.io.*;
import java.util.regex.*;
class demo
{
public static void main(String args[])
{
String sample = "Address Line1";
Pattern p=Pattern.compile("1");
Matcher m=p.matcher(sample);
if(m.find())
{
sample=m.replaceAll(" 1");
}
System.out.println(sample);
}
}
现在为字符串创建匹配器对象
Matcher m=p.matcher(sample);
现在设置一个条件来检查Matcher是否找到了任何模式字符串,以及它是否放置了一个replaceAll方法来替换它
if(m.find())
{
sample=m.replaceAll(" 1");
}
完整代码如下:-
Pattern p=Pattern.compile("1");
import java.io.*;
import java.util.regex.*;
class demo
{
public static void main(String args[])
{
String sample = "Address Line1";
Pattern p=Pattern.compile("1");
Matcher m=p.matcher(sample);
if(m.find())
{
sample=m.replaceAll(" 1");
}
System.out.println(sample);
}
}
我同意,但为了以防万一,最好先检查前面是否有字符?并在两个组之间放置空格。您需要为此添加正则表达式组too@EdwardM.B. 我正在编辑我的答案,其中包括:@ PSHEMO在ReX中引用存储的值,使用组是必要的。您的正则表达式是否应为\\d+?@Fede$0是对组0的引用,该组表示整个正则表达式的匹配。我不需要任何额外的组。这里可以有任何数字。我认为使用正则表达式的全部目的是为了使OP不必为每个数字都有单独的内容。如果数字之前已经有空格,是否要再添加一个空格?