0

假设,我有一个这样的字符串

A. BCD, B. BGF and C.KLMN

输出将是这样的

A. BCD et al

所以,我想用el al第一个,. 我怎么做?

4

7 回答 7

3

一个非常简单的单行:

output= input.split(",")[0] + " et al" ;

如果 没有逗号,请不要评论此代码将失败input,因为这种情况已明确排除在问题之外。我确定 OP 已经知道如何处理它,我们都应该专注于他/她不知道的事情

于 2013-08-13T06:43:49.663 回答
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);
    }
于 2013-08-13T06:16:21.627 回答
0

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.

于 2013-08-13T06:30:07.813 回答
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));
于 2013-08-13T06:01:53.800 回答
0

您可以将replaceFirst(String regex, String replacement)String 的方法用作:

String str =  "A. BCD,  B. BGF and C.KLMN"; 
System.out.println(str.replaceFirst(",.*"," et al"));
于 2013-08-13T06:38:49.640 回答
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);
}

//这里的剩余字符串是第一个逗号之后的字符串部分。

现在替换它使用。

str.replace(remainingString, "et al");
于 2013-08-13T06:13:22.620 回答
0

您可以执行以下步骤:

  • indexOf()使用 String方法获取逗号索引。
  • 检查它是否是肯定的,即逗号是否存在。
  • 如果逗号不存在则不需要做任何处理。
  • 如果逗号存在,则检查它是否是第一个字符?如果它是第一个字符,则创建一个新字符串并返回它。
  • 如果它不是第一个字符,则将子字符串获取到该索引并将其附加到所需的字符串。
于 2013-08-13T06:22:04.817 回答