我有一个字符串列表,其中一些(不是全部)字符串的结尾如下:
"StringSignOut"
"String Sign Out"
"String SIGNOUT"
"StringSO"
"String SO"
"String S.O."
"StringS.O."
我想摆脱所有的退出和SO,我只是不确定如何做模式。
private static String getGroup(String s, String pat, int g) {
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(s);
if (m.matches()) {
return m.toMatchResult().group(g);
} else {
return null;
}
}
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用带有多个选择的正则表达式从字符串
中删除SO/signout
<强>样品:强>
String [] s = { "StringSignOut",
"String Sign Out",
"String SIGNOUT",
"StringSO",
"String SO",
"String S.O.",
"StringS.O."};
for(String s2 : s)
{
System.out.println(s2.replaceAll("SignOut| Sign Out| SIGNOUT|SO| SO| S.O.|S.O.", ""));
}
<强>结果:强>
String
String
String
String
String
String
String
答案 2 :(得分:0)
您可以使用以下代码
String [] s = { "StringSignOut",
"String Sign Out",
"String SIGNOUT",
"StringSO",
"String SO",
"String S.O.",
"StringS.O."};
for(String s2 : s)
{
System.out.println(s2.replaceAll("(?i)\\s*(?:sign\\s*out|s\\W*o\\W*)", ""));
}
<强>输出:强>
String
String
String
String
String
String
String
模式说明:
(?i)
不区分大小写的修饰符。\s*
匹配零个或多个空格字符。(?:...)
非捕获组。sign\s*out
匹配字符串后跟零个或多个空格,然后再跟上字符串out
。|
逻辑OR运算符。s\W*o\W*
匹配字符串s
后跟零个或多个非单词字符,后跟文字o
后跟零个或多个非单词字符的字符串。< / LI>
答案 3 :(得分:0)
这对我有用:
String[] strings = new String[] {"StringSignOut","String Sign Out","String SIGNOUT","StringSO","String SO","String S.O."};
for(String str : strings)
{
System.out.println(str.replaceAll("(?i)(sign\\s*out)|(s\\.?o\\.?)",""));
}
收率:
String
String
String
String
String
String
答案 4 :(得分:0)
String[] arr = {"StringSignOut", "String Sign Out", "String SIGNOUT", "StringSO", "String SO", "String S.O.", "StringS.O."};
String[] replace = {"SO", "SignOut", "Sign Out", "SIGNOUT", "S.O."};
for (String s : arr) {
String tmp = s;
for (String rep: replace) {
tmp = tmp.replace(rep, "");
}
System.out.println(tmp);
}
<强>输出强>
String
String
String
String
String
String
String