有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何删除最后的符号?

List<String> solList = new ArrayList<String>( );
solList.add( "num1" );
solList.add( "num2" );

StringBuilder result = new StringBuilder();
for ( String a : solList )
{
result.append( a ).append( ", " );
}

String withoutLastComma = result.substring( 0, result.length( ) - ", 
".length( ) );
System.err.println( withoutLastComma );

我想删除最后一个逗号,我使用子字符串,我如何才能变得更好这段代码

使用字符串实用工具方法(如“StringUtil.join”)连接数组或集合对象中的元素。请参阅“StringUtil API的StringUtil.join”条目

例如: StringUtils.join(["e", "f", "g"], "--") // => "e--f--g


共 (3) 个答案

  1. # 1 楼答案

    列表到逗号分隔的字符串Using java 8 参见String.join()

    逻辑1:

    import java.util.Arrays;
    import java.util.List;
    
    public class TestApp2 {
    
        public static void main(String[] args) {
    
            List<String> list = Arrays.asList("A", "B", "C", "D");
    
            String result = String.join(",", list);
            System.out.println(result);
        }
    
    }
    

    输出:

    A,B,C,D
    

    逻辑2:

    StringJoiner可用于使用收集器从流创建格式化输出。连接(字符序列)。例如:

     List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
     String commaSeparatedNumbers = numbers.stream()
         .map(i -> i.toString())
         .collect(Collectors.joining(", "));
    

    输出:

    1,2,3,4
    
  2. # 2 楼答案

    有很多方法可以实现这一点。Java 8已经在String中提供了一个join方法,该方法将在列表或数组中的字符串与每对元素之间的固定字符串连接起来

    还有一种方法。我将此作为一个答案,因为它在不一定涉及字符串和分隔符的其他数组/列表遍历情况下是一个有用的习惯用法:

    StringBuilder result = new StringBuilder();
    boolean first = true;
    for ( String a : solList )
    {
        if (!first) {
            result.append(", ");
        }
        result.append(a);
        first = false;
    }
    

    我不会在这里使用它,但这种模式在很多情况下都会出现

    这与丹尼斯的答案基本相同,只是表达方式略有不同

  3. # 3 楼答案

    以下是获取逗号分隔列表的方法之一:

    StringBuilder result = new StringBuilder();
    int size = 0;
    if(solList!=null && (size=solList.size())>0)
    {
       result.append(solList.get(0));
       for ( int i=1;i<size;i++ )
       {
            result.append( ", " ).append(solList.get(i));
        }
     }