从java中的逗号分隔字符串中删除最后一组值

时间:2010-09-14 12:24:32

标签: java

我想用java从字符串中删除最后一组数据。 例如,我有一个像A,B,C,这样的字符串,我想删除,C,,并希望得到像A,B这样的输出值。怎么可能在java?请帮忙。

8 个答案:

答案 0 :(得分:4)

这是一个相当“强大”的reg-exp解决方案:

Pattern p = Pattern.compile("((\\w,?)+),\\w+,?");

for (String test : new String[] {"A,B,C", "A,B", "A,B,C,",
                                 "ABC,DEF,GHI,JKL"}) {
    Matcher m = p.matcher(test);
    if (m.matches())
        System.out.println(m.group(1));
}

输出:

A,B
A
A,B
ABC,DEF,GHI

答案 1 :(得分:3)

String start = "A,B,C,";
String result = start.subString(0, start.lastIndexOf(',', start.lastIndexOf(',') - 1));

答案 2 :(得分:2)

因为可能有一个尾随逗号,就像这样(使用org.apache.commons.lang.StringUtils):

ArrayList<String> list = new ArrayList(Arrays.asList(myString.split()));
list.remove(list.length-1);
myString = StringUtils.join(list, ",");

答案 3 :(得分:0)

您可以使用String#lastIndexOf查找倒数第二个逗号的索引,然后使用String#substring仅提取其前面的部分。由于您的示例数据以“,”结尾,因此您需要使用the version of String#lastIndexOf that accepts a starting point并跳过最后一个字符(例如,输入字符串的length减1)。

我不打算在理论上发布实际代码,以便教一个人捕鱼,但正如其他人一样:

String data = "A,B,C,";
String shortened = data.substring(0, data.lastIndexOf(',', data.length() - 2));

答案 4 :(得分:0)

如果无法使用完整的String.split(),那么只需扫描字符串中的逗号并在达到第二个后停止,而不将其包含在最终答案中?

String start = "A,B";
StringBuilder result = new StringBuilder();
int count = 0;
for(char ch:start.toCharArray()) {
    if(ch == ',') {
        count++;
        if(count==2) {
            break;
        }
    }
    result.append(ch);
}
System.out.println("Result = "+result.toString());

简单的技巧,但应该是有效的。

如果您想要移除最后一组数据,无论您想要读多少,那么 start.substring(0, start.lastIndexOf(',', start.lastIndexOf(',')-1))

答案 5 :(得分:0)

您可以使用正则表达式执行此操作

String start = "A,B,C,";
String result = start.replaceAll(",[^,]*,$", "");
System.out.println(result);

打印

A,B

这会简单地删除“倒数第二个逗号后跟数据后跟最后一个逗号”

答案 6 :(得分:0)

另一种方法是使用StringTokenizer

  String input = "A,B,C,";
  StringTokenizer tokenizer = new StringTokenizer(input, ",");
  String output = new String();
  int tokenCount = tokenizer.countTokens();
  for (int i = 0; i < tokenCount - 1; i++) {
    output += tokenizer.nextToken();
    if (i < tokenCount - 1) {
      output += ",";
    }
  }

答案 7 :(得分:0)

public string RemoveLastSepratorFromString(string input)
{
    string result = input;
    if (result.Length > 1)
    {
        result = input.Remove(input.Length - 1, 1);
    }
    
    return result;
}
        
// use from above method
string test = "1,2,3,"
string strResult = RemoveLastSepratorFromString(test);
//output --> 1,2,3