Java中对应PHP的implode(',' , array_filter( array () ))的方法是什么?

5 浏览
0 Comments

Java中对应PHP的implode(',' , array_filter( array () ))的方法是什么?

我经常在PHP中使用这段代码:

$ordine['address'] = implode(', ', array_filter(array($cliente['cap'], $cliente['citta'], $cliente['provincia'])));

它会清除空字符串并用逗号将它们连接起来。如果只剩下一个字符串,它不会添加额外的不必要逗号。它不会在末尾添加逗号。如果没有剩下任何字符串,它会返回空字符串。

因此,我可以得到以下结果之一:

""
"街道abc 14"
"街道abc 14, 00168"
"街道abc 14, 00168, 罗马"

在没有添加外部库的情况下(针对Android设计),最好的Java实现是什么(代码越少越好)?

0
0 Comments

Java中没有直接对应于PHP的implode(',' , array_filter( array () ))函数的等价方法。该PHP函数的作用是将一个数组中的元素连接成一个字符串,并且只保留非空元素。

在Java中,可以通过使用StringJoiner类来实现类似的功能。该类在Java 8中引入,可以将一系列字符串连接成一个字符串,并且可以指定连接符。

下面是使用StringJoiner类实现类似PHP函数的示例代码:

import java.util.Arrays;
import java.util.StringJoiner;
public class Main {
    public static void main(String[] args) {
        String[] array = {"Red", "", "Green", "Blue"};
        
        StringJoiner joiner = new StringJoiner(",");
        
        for (String element : array) {
            if (!element.isEmpty()) {
                joiner.add(element);
            }
        }
        
        String result = joiner.toString();
        System.out.println(result); // Output => Red,Green,Blue
    }
}

在上面的示例代码中,我们首先创建了一个StringJoiner对象,并指定了连接符为逗号。然后,遍历数组中的元素,如果元素不为空,就将其添加到StringJoiner中。最后,调用toString()方法获取连接后的字符串。

通过使用StringJoiner类,我们可以实现类似PHP函数的功能,并且只保留非空元素。

0
0 Comments

Java中实现PHP的implode(',', array_filter(array()))的问题出现的原因是因为Java中没有直接等价的方法来实现这一功能。在PHP中,implode是将数组元素连接成一个字符串,array_filter是过滤数组中的元素。而在Java中,没有直接的方法来同时实现这两个功能。

解决这个问题的方法有两种。首先是使用Java 8的新特性,使用String.join或String.joining方法来实现连接字符串的功能。这些方法可以接受一个分隔符和一个元素列表,将元素连接成一个字符串。如果不需要过滤元素,可以直接使用这些方法。

第二种方法是使用Java 8的新特性中的Stream流来实现。可以使用filter方法来过滤数组中的元素,然后使用Collectors.joining方法来连接过滤后的元素。

下面是使用Java 8的新特性重新实现的代码:

private static final Predicate IS_NOT_SPACES_ONLY = 
        Pattern.compile("^\\s*$").asPredicate().negate();
        
public static String implode(String delimiter, String... data) {
    return Arrays.stream(data)
            .filter(IS_NOT_SPACES_ONLY)
            .collect(Collectors.joining(delimiter));
}

这段代码使用了Stream流来过滤数组中的元素,将非空格字符的元素连接成一个字符串。

另外,之前的代码是在Java 8之前的版本中实现的。它使用StringBuilder来连接字符串,并使用正则表达式来判断是否是空字符串。这种方法在Java 8中已经过时,不推荐使用。

可以通过使用Java 8的新特性来实现类似于PHP中implode和array_filter的功能。使用String.join或String.joining方法来连接字符串,或者使用Stream流来过滤和连接数组元素。

0
0 Comments

PHP的implode(',' , array_filter( array () ))函数在Java中没有直接对应的方法。所以,我们需要找到一个解决方案来实现相同的功能。

一种解决方案是使用Java的String.join()方法。这个方法可以将一个字符串数组连接起来,并用指定的分隔符分隔。但是,这个方法不能过滤空元素。为了实现类似于array_filter()的功能,我们可以使用Java 8引入的流(Stream)来过滤空字符串。

下面是使用Java的String.join()和流(Stream)来实现相同功能的代码:

String[] array = { "Hello", "", "World", "!" };
String result = String.join(", ", Arrays.stream(array).filter(s -> !s.isEmpty()).toArray(String[]::new));
System.out.println(result);

这段代码首先定义了一个字符串数组array,其中包含了一些元素。然后,我们使用Arrays.stream()方法将数组转换为流。接下来,我们使用filter()方法过滤掉空字符串。最后,我们使用String.join()方法将过滤后的字符串数组连接起来,并使用逗号和空格作为分隔符。

通过这种方式,我们可以实现类似于PHP的implode(',' , array_filter( array () ))函数的功能。

0