假设,我有一个这样的字符串
A. BCD, B. BGF and C.KLMN
输出将是这样的
A. BCD et al
所以,我想用el al
第一个,
. 我怎么做?
一个非常简单的单行:
output= input.split(",")[0] + " et al" ;
如果 没有逗号,请不要评论此代码将失败input
,因为这种情况已明确排除在问题之外。我确定 OP 已经知道如何处理它,我们都应该专注于他/她不知道的事情。
你也可以试试这个
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);
}
Apache StringUtils are incredibly useful for String manipulation. They contain a heap of methods that extend the base JDK and are nearly all null-safe, ie they return sensible answers rather than throwing null pointer exception if a string happens to be null.
To implement your requirement:
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;
In the code above, if a comma is present in str, the first operand will suffix 'et al' to the part of the String prior to the comma. Otherwise if no comma is present then str is unchanged.
获取逗号后面的字符串,替换成你想要的字符串
例如
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));
您可以将replaceFirst(String regex, String replacement)
String 的方法用作:
String str = "A. BCD, B. BGF and C.KLMN";
System.out.println(str.replaceFirst(",.*"," et al"));
您可以使用 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);
}
//这里的剩余字符串是第一个逗号之后的字符串部分。
现在替换它使用。
str.replace(remainingString, "et al");
您可以执行以下步骤:
indexOf()
使用 String方法获取逗号索引。