我想要使用Java从字符串中移除最后一组数据。例如,我有一个字符串
A,B,C,
,我想要移除,C,
并获取输出值A,B
。在Java中如何实现呢?请帮忙解决。A,B,C,
,我想要移除,C,
并获取输出值A,B
。在Java中如何实现呢?请帮忙解决。String start = "A,B,C,";
String result = start.subString(0, start.lastIndexOf(',', start.lastIndexOf(',') - 1));
这里有一个相当“强大”的正则表达式解决方案:
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
由于可能存在逗号,可以使用org.apache.commons.lang.StringUtils这样的内容:
ArrayList<String> list = new ArrayList(Arrays.asList(myString.split()));
list.remove(list.length-1);
myString = StringUtils.join(list, ",");
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
您可以使用String#lastIndexOf
来查找倒数第二个逗号的索引,然后使用String#substring
仅提取其前面的部分。由于您的示例数据以“,”结尾,因此需要使用接受起始点的String#lastIndexOf
版本并跳过最后一个字符(例如,输入字符串的length
减1)。
我本来不打算发布实际代码,因为更好的方法是教人钓鱼,但既然其他人都这样做了:
String data = "A,B,C,";
String shortened = data.substring(0, data.lastIndexOf(',', data.length() - 2));
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))
String start = "A,B,C,";
String result = start.replaceAll(",[^,]*,$", "");
System.out.println(result);
打印
A,B
这只是简单地删除“倒数第二个逗号后跟数据后面的最后一个逗号”
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 += ",";
}
}