簡體   English   中英

使用正則表達式替換Java字符串

[英]Java string replace using regex

我的字符串值為“地址線1”,“地址線2” ...等等。如果字符串中有任何數字值,例如“地址線1”,“地址線2”,我想添加一個空格。

我可以使用包含和替換這樣

String sample = "Address Line1";
if (sample.contains("1")) {
    sample = sample.replace("1"," 1");
}

但是我該如何使用正則表達式呢?

sample = sample.replaceAll("\\d+"," $0");

要使用正則表達式,您將需要replaceAll而不是replace方法:

  • 作為正則表達式,您可以使用

    • \\\\d+匹配一個或多個連續數字的任何組。 我們在這里需要所有的連續數字,因為從foo123僅會匹配一個數字,例如foo 1 2 3
    • (?<=[a-zA-Z])\\\\d如果只想在前有字母字符的數字前添加空格。 (?<=\\\\[a-zA-Z])部分在后面 ,它只是檢查被測數字之前是否具有azAZ范圍內的字符。
  • 作為替換,您可以使用" $0表示space組0中的匹配項,這意味着正則表達式當前匹配的部分。

所以嘗試

sample = sample.replaceAll("\\d+", " $0")

要么

sample = sample.replaceAll("(?<=[a-zA-Z])\\d", " $0")

它將"hello 1 world2"更改為"hello 1 world 2" -請注意,只有2具有額外的空間。

首先創建一個您要搜索的Pattern對象,然后將其編譯為Pattern對象,如下所示:

Pattern p=Pattern.compile("1");

現在為您的字符串創建Matcher對象

Matcher m=p.matcher(sample);

現在放置一個條件來檢查Matcher是否找到了您的任何模式字符串,以及是否放置了replaceAll方法來替換它

if(m.find())
{   
sample=m.replaceAll(" 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);
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM