假设我有一个像这样的字符串
A. BCD, B. BGF and C.KLMN
,输出就像这样
A. BCD et al
因此,我想在第一个el al
之后用,
替换所有内容。我该怎么做?
答案 0 :(得分:3)
非常简单的单行:
output= input.split(",")[0] + " et al" ;
如果input
中没有逗号,请不要评论此代码会失败,因为此案例明确排除。我确信OP已经知道如何处理它,我们都应该关注他/她做什么不。
答案 1 :(得分:1)
你也可以尝试这个
String str = "A. BCD, B. BGF and C.KLMN";
if(str.contains(",")){
int index = str.indexOf(",");// index of first occurrence
String newStr = str.substring(0, index) + " el al";
System.out.println(newStr);
} else{
System.out.println(str);
}
答案 2 :(得分:0)
获取逗号后面的字符串 并用你想要的字符串替换它
例如
Pattern p = Pattern.compile(".*,\\s*(.*)");
Matcher m = p.matcher("abcd,fg;ijkl, cas");
if (m.find())
System.out.println(m.group(1));
或者您可以使用简单的String方法:
System.out.println(s.substring(s.lastIndexOf(",") + 1).trim());
System.out.println(s.substring(s.lastIndexOf(", ") + 2));
答案 3 :(得分:0)
您可以使用JAVA API中的indexOf方法。
String str = "A. BCD, B. BGF and C.KLMN";
int index = str.indexOf(",");
String remainingString = "";
if(index != -1){
remainingString = str.substring(index + 1);
}
//这里的remainingString是第一个逗号后面的字符串部分。
现在使用。
替换它str.replace(remainingString, "et al");
答案 4 :(得分:0)
您可以执行以下步骤:
indexOf()
方法获取逗号索引。答案 5 :(得分:0)
Apache StringUtils对字符串操作非常有用。它们包含一堆扩展基本JDK的方法,几乎都是空安全的,即如果字符串恰好为null,它们会返回合理的答案,而不是抛出空指针异常。
实现您的要求:
import org.apache.commons.lang3.StringUtils;
....
String str = "A. BCD, B. BGF and C.KLMN"; // or whatever it happens to be
str = StringUtils.contains(str, ",") ? StringUtils.substringBefore(str, ",") + " et al" : str;
在上面的代码中,如果str中存在逗号,则第一个操作数将在逗号之前的字符串部分后缀'et al'。否则,如果没有逗号,则str不变。
答案 6 :(得分:0)
您可以使用String的replaceFirst(String regex, String replacement)
方法:
String str = "A. BCD, B. BGF and C.KLMN";
System.out.println(str.replaceFirst(",.*"," et al"));