[英]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])
部分在后面 ,它只是檢查被測數字之前是否具有az
或AZ
范圍內的字符。 作為替換,您可以使用" $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.