有人可以告訴我,如果存在PHP preg_grep()
的Java等價物嗎?或者提供給我一個完成相同的好方法?用於PHP的Java相當於preg_grep
我需要對輸入數組中的元素進行字符串匹配,並使用輸入數組的索引返回數組,如preg_grep()
所示。
有人可以告訴我,如果存在PHP preg_grep()
的Java等價物嗎?或者提供給我一個完成相同的好方法?用於PHP的Java相當於preg_grep
我需要對輸入數組中的元素進行字符串匹配,並使用輸入數組的索引返回數組,如preg_grep()
所示。
沒有確切的等值。但是,您可以使用String#matches(String)函數來測試字符串是否與給定模式匹配。例如:
String s = "stackoverflow";
s.matches("stack.*flow"); // <- true
s.matches("rack.*blow"); // <- false
如果你想匹配的指數結果數組,你可以遍歷字符串你給定的輸入數組,檢查匹配和循環的當前索引添加到您的結果數組。
你可以使用這種功能,使用String.matches()
並遍歷您的數組:
public static List<Integer> preg_grep(String pattern, List<String> array)
{
List<Integer> indexes = new ArrayList<Integer>();
int index = 0;
for (String item : array) {
if (item.matches("ba.*")) {
indexes.add(index);
}
++index;
}
return indexes;
}
謝謝,我認爲這應該做我的工作。我是新來的Java,我必須將我的PHP項目移植到Java,以便自動運行腳本。由於我是java新手,我將不得不花費一些時間來測試您的解決方案。 – user3127090
如何像:
private static String[] filterArrayElem(String[] inputArray) {
Pattern pattern = Pattern.compile("(^a.*)");
List<String> resultList = new ArrayList<>();
for (String inputStr : inputArray) {
Matcher m = pattern.matcher(inputStr);
if (m.find()) {
resultList.add(m.group(0));
}
}
return resultList.toArray(new String[0]);
}
然後,您可以使用它在採用以下方式:
String [] input = { "apple", "banana", "apricot"};
String [] result = filterArrayElem(input);
你可以看看http://stackoverflow.com/questions/5084419/java-preg-match-array – Simon
爲了將來的參考,除了語言/風味之外,關於正則表達式的問題應該被標記[tag:regex]標籤([tag:java],[tag:php]等)。 [tag:qregularexpression]標籤是指您未使用的特定實現。 –