[英]Converting String from arraylist to another String
假設我有以下 Arraylist:
1. [123] [456] [789]
2. [134] [105] [455]
並且必須遵守規則:
[123] [456] = cat
[789] = dog
[134] = mouse
[105] [455] = snake
從 Arraylist 1 開始,我想形成以下新的 Array 列表:
有沒有辦法做到這一點。 我目前還沒有找到任何字符串到字符串轉換的內容。
這里有一種方法可以做到這一點。 這只是眾多可能方式中的一種; 也許還有比這更好的方法。 您可能認為這只是如何執行此操作的一個指標。 有趣的類是Rules
類。 這將轉換規則實現為java.util.Pattern
實例,其中的apply()
方法進行轉換。
如果您有其他類型的輸入數組而不是String
,您可以遵循一般思想,但基於Pattern
的實現可能並不總是有效。
public class ListOfStringsToAnother{
public static void main( String[] args ){
List<String> inputStrings = getInputArray();
List<String> output = new ArrayList<>();
for( String input : inputStrings ) {
output.add( Rules.INSTANCE.apply( input ) );
}
output.forEach( System.out::println );
}
private static List<String> getInputArray(){
List<String> list = Arrays.asList( "[123] [456] [789]", "[134] [105] [455]" );
return list;
}
private static final class Rules{
static Map<String, Pattern> patterns = new HashMap<>();
static Rules INSTANCE = new Rules();
private Rules() {
patterns.put( "cat", Pattern.compile( "\\[123\\] \\[456\\]", Pattern.CASE_INSENSITIVE ) );
patterns.put( "dog", Pattern.compile( "\\[789\\]", Pattern.CASE_INSENSITIVE ) );
patterns.put( "mouse", Pattern.compile( "\\[134\\]", Pattern.CASE_INSENSITIVE ) );
patterns.put( "snake", Pattern.compile( "\\[105\\] \\[455\\]", Pattern.CASE_INSENSITIVE ) );
}
String apply( String input ) {
/* Apply your rules here. Change this logic based on the outcome you need. */
for( Entry<String, Pattern> e : patterns.entrySet() ) {
Pattern p = e.getValue();
input = p.matcher( input ).replaceAll( e.getKey() ); //This replaces the original strings in the input
}
return input;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.