Java“||”字符串替换为“OR”

时间:2016-06-01 05:54:29

标签: java string replaceall

我有一个像

这样的字符串
  

“age = 18 || name ='Mistic'|| civilstatus ='married'|| gender =   '0'“

我需要替换“||”通过“或”。我试着跟随代码。

System.out.println("age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0'".replaceAll("||", "OR"));

但我得到了

  

“ORORORgOReOR OR = OR OROROROROR OR | OR | OROROROROROROROR OR OR OR   OR'ORMORiOROROROROROROROROR OR | OR | OR   ORcORiOROROROROROROROROROROROROROROROR OR = OR   OR'OROROROROROROROROROROROR'OR OR | OR | ORgOROROROROROROROROROR OR = OR   OR'OR0OR'OR“

我需要的是

  

“年龄= 18或姓名='Mistic'或civilstatus ='已结婚'或性别=   '0'“

我怎样才能实现这一点。

  

编辑   我已经阅读了this question的问题和答案,并不是类似的。因为这个问题是关于替换字符串而我的问题是关于为我的代码获取不熟悉的结果。

7 个答案:

答案 0 :(得分:10)

当您不想使用正则表达式替换时,为什么使用replaceAll

尝试使用普通replace

System.out.println("age = 18 || name = 'Mistic' || civilstatus = 'married' 
    || gender = '0'".replace("||", "OR"));

输出

  
    

年龄= 18或姓名='Mistic'或civilstatus ='已结婚'或性别='0'

  

答案 1 :(得分:5)

|在正则表达式中具有特殊含义。你需要逃脱它。

public static void main(String[] args) {
    String s = "age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0' ";
    System.out.println(s.replaceAll("\\|\\|", "OR"));
}

O / P:

age = 18 OR name = 'Mistic' OR civilstatus = 'married' OR gender = '0' 

PS:或者,您可以使用Pattern.quote()来转义特殊字符。

String  st = Pattern.quote("||");
System.out.println(s.replaceAll(st, "OR"));

答案 2 :(得分:2)

你必须逃避“||”,因为它们是正则表达式中的元字符。

使用:

System.out.println("age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0'".replaceAll("\\|\\|", "OR"));

你得到的原因:

  

“ORORORgOReOR OR = OR OROROROROR OR | OR | OROROROROROROROR OR OR OR   OR'ORMORiOROROROROROROROROR OR | OR | OR   ORcORiOROROROROROROROROROROROROROROROR OR = OR   OR'OROROROROROROROROROROROR'OR OR | OR | ORgOROROROROROROROROROR OR = OR   OR'OR0OR'OR“

是因为正则表达式“||”说“用”或“替换空字符串或空字符串或空字符串”。换句话说,用“OR”替换所有空字符串。

答案 3 :(得分:2)

使用Pattern.quote

System.out.println("age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0'".replaceAll(Pattern.quote("||"), "OR"));

答案 4 :(得分:2)

你可以使用replace而不是replaceAll,尝试使用以下..

    System.out.println("age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0' ".replace("||", "OR"));

答案 5 :(得分:1)

您需要转义输入字符串中的特殊字符。

答案 6 :(得分:1)

您可以使用以下代码替换所有“||”用“OR”

String str = "age = 18 || name = 'Mistic' || civilstatus = 'married' || gender = '0' ";
System.out.println(str.replaceAll("\\|\\|", "OR"));