繁体   English   中英

CBB 10中的多个StringReplace

[英]Multiple StringReplace in CBB 10

我要替换10个以上的不同字符串。 现在,我正在使用手动方法,如以下代码所示。

StringReplace(StringReplace(StringReplace(StringReplace(
StringReplace(StringReplace(StringReplace(MyEditor->Text,
"one","ab",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"two","cd",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"three","ef",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"four","gh",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"five","ij",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"six","kl",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase),
"seven","mn",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase);

...so on and on.

因此,我想知道如何使用更实用,更灵活的方法替换许多字符串。 也许通过使用特定的功能?

非常感谢你。

RTL没有为此目的而提供的功能。 您将必须编写自己的示例,例如:

struct StringReplacePattern
{
    String OldPattern;
    String NewPattern;
};

String __fastcall MultiStringReplace(const String S, const StringReplacePattern *Patterns, int NumPatterns, TReplaceFlags Flags)
{
    String Result = S;
    for (int i = 0; i < NumPatterns; ++i)
        Result = StringReplace(Result, Patterns[i].OldPattern, Patterns[i].NewPattern, Flags);
    return Result;
}

然后您可以这样称呼它:

StringReplacePattern patterns[] = {
    {"one", "ab"},
    {"two", "cd"},
    {"three", "ef"},
    {"four", "gh"},
    {"five", "ij"},
    {"six", "kl"},
    {"seven", "mn"},
    // and so on...
};

String S = MultiStringReplace(MyEditor->Text, patterns, ARRAYSIZE(patterns), TReplaceFlags()<< rfReplaceAll << rfIgnoreCase);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM