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