在java中从逗号分隔的字符串中删除最后一组值
我希望使用java从字符串中删除最后一组数据。 例如,我有一个字符串,如在java中从逗号分隔的字符串中删除最后一组值,java,Java,我希望使用java从字符串中删除最后一组数据。 例如,我有一个字符串,如a,B,C,,我想删除,C,,并想得到输出值,如a,B。在java中它是如何实现的?请提供帮助。您可以使用字符串#lastIndexOf查找倒数第二个逗号的索引,然后仅提取其前面的部分。由于示例数据以“,”结尾,因此需要使用并使其跳过最后一个字符(例如,输入字符串的长度减1) 我本不打算发布理论上的实际代码来更好地教一个人钓鱼,但正如其他人一样: String data = "A,B,C,"; String shortene
a,B,C,
,我想删除,C,
,并想得到输出值,如a,B
。在java中它是如何实现的?请提供帮助。您可以使用字符串#lastIndexOf
查找倒数第二个逗号的索引,然后仅提取其前面的部分。由于示例数据以“,”结尾,因此需要使用并使其跳过最后一个字符(例如,输入字符串的长度
减1)
我本不打算发布理论上的实际代码来更好地教一个人钓鱼,但正如其他人一样:
String data = "A,B,C,";
String shortened = data.substring(0, data.lastIndexOf(',', data.length() - 2));
由于后面可能有逗号,类似于以下内容(使用org.apache.commons.lang.StringUtils):
ArrayList list=新的ArrayList(Arrays.asList(myString.split());
列表。删除(列表长度-1);
myString=StringUtils.join(列表,“,”);
这是一个相当“健壮”的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
如果无法使用full String.split(),则只需扫描字符串中的逗号,并在到达第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 += ",";
}
}
String input=“A,B,C,”;
StringTokenizer tokenizer=新的StringTokenizer(输入“,”);
字符串输出=新字符串();
int tokenCount=tokenizer.countTokens();
对于(int i=0;i
在结尾(C之后)我还有一个逗号。因此,当我想得到逗号的最后一个索引时,我会得到最后一个逗号的索引,即C之后的逗号。@Suvonkar:我刚刚注意到了这一点,并在你评论时进行了更新;看到更新了吗。@Peter::-)事实上,我一开始真的是这么看你的评论的。直到后来我才看到后面的逗号。当然,完全拆分和联接是一种严重的过度操作吗?这取决于他的情况。代码简单易读,不会过早优化。不过,我喜欢正则表达式的解决方案。
A,B
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 += ",";
}
}
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