检查数组中的子字符串– Java,Python和Swift

时间:2020-02-23 14:33:59  来源:igfitidea点击:

在本快速教程中,我们将学习如何快速搜索数组中字符串的一部分。
我们将演示Java,Python和Swift的示例。

检查子字符串是否存在于任何数组元素中的直接方法是遍历数组元素。
但是,在接下来的部分中,我们将使用更短,更简洁,更易读的不同方法。

使用Java数组中的子字符串

使用Java 8 Stream API,我们可以查找数组中是否存在任何子字符串。

import java.util.Arrays;
import java.util.Optional; 

public class SubStringChecker{

   public static void main(String []args){
      System.out.println("Hello World");
      
      String[] array = {"abc","def", "ghi"};
      
      String input = "abcdefghi";
      boolean stringExists = substringExistsInArray(input, array);
      System.out.println(stringExists);
      
      String input2 = "acdfhi";
      stringExists = substringExistsInArray(input2, array);
      System.out.println(stringExists);
      
      System.out.println(getFirstMatchingSubstring(input, array));
      System.out.println(getFirstMatchingSubstring(input2, array));
   }
   
   public static boolean substringExistsInArray(String inputStr, String[] items) {
      return Arrays.stream(items).parallel().anyMatch(inputStr::contains);
   }

   public static Optional getFirstMatchingSubstring(String inputStr, String[] items) {
     return Arrays.stream(items).parallel().filter(inputStr::contains).findAny();
   }

}

在上面的代码中,我们创建了两个方法。
一种检查子字符串是否存在。
其他返回匹配的子字符串。

anyMatch返回任何匹配的子字符串。
没有特定的顺序。
同样,findAny返回任何匹配的数组元素。
该值作为可选字符串返回。

上面的输出是:

检查数组Java中的子字符串

使用Python检查数组中的子字符串

我们可以使用Python列表推导来检查数组是否包含子字符串。

input1 = "abcdefghi"
array = ['abc', 'def', 'ghi'] 

result = any(sub in input1 for sub in array) 
print("substring exists in the list for input1: " + str(result)) 

input2 = "acdfhi"

result = any(sub in input2 for sub in array) 
print("substring exists in the list for input2: " + str(result)) 

matchingString = next(substring for substring in array if substring in input1)
print("substring that matched was "+matchingString)

#Output
"""
substring exists in the list for input1: True                                                                                        
substring exists in the list for input2: False                                                                                       
substring that matched was abc 
"""

如果数组中存在任何子串,any将返回true。

要打印匹配的子字符串,我们使用next

如果条件根本不匹配,next将抛出StopIteration。

使用Swift检查数组是否包含子字符串

Swift越来越受欢迎。

下面的代码段对此进行了验证。

import UIKit

let input1 = "abcdefghi"
let array = ["abc", "def", "ghi"]

let input1Matches = array.contains(where: input1.contains)

print("array contains input1 \(input1Matches)")

let input2 = "acdfhi"

let input2Matches = array.contains(where: input2.contains)

print("array contains input2 \(input2Matches)")

如果数组包含字符串的子字符串,则array.contains(where:string.contains)返回一个布尔值。