c++ builder XE4, 10.2 Tokyo > 自動付加された数値のsuffix (例 "_123") を取得する実装
7721 ワード
動作確認
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
http://qiita.com/7of9/items/29f5393b523bdc9a30ba
の問題の対応
Unit1.cpp
#include <IdGlobal.hpp> // IsNumeric();
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String work1 = L"AAA_BBB_CCC_123";
String suffix1 = getAutoAddedNumberSuffix(work1); // "_123";
String work2 = L"AAA_BBB_CCC";
String suffix2 = getAutoAddedNumberSuffix(work2); // L""
String work3 = L"AAA_BBB_CCC_NAN";
String suffix3 = getAutoAddedNumberSuffix(work3); // L""
String work4 = L"AAA_BBB_CCC_";
String suffix4 = getAutoAddedNumberSuffix(work4); // L""
String work5 = L"AAA_BBB_CCC_1A3";
String suffix5 = getAutoAddedNumberSuffix(work5); // L""
String work6 = L"AAA_BBB_CCC_31415";
String suffix6 = getAutoAddedNumberSuffix(work6); // L"_31415"
String work7 = L"AAA_BBB_CCC_3141592";
String suffix7 = getAutoAddedNumberSuffix(work7); // L""
}
//---------------------------------------------------------------------------
String __fastcall TForm1::getAutoAddedNumberSuffix(String srcStr)
{
// 5桁までしか対応していない
// _が複数入っている文字列に対応
int len = srcStr.Length();
static const int kToTheLast = MAXINT;
String work = srcStr.SubString(len - 5, kToTheLast); // 5:5桁まで
int posUnderbar = work.Pos(L"_");
if (posUnderbar == 0) {
return L"";
}
String suffixNoUnderbar = work.SubString(posUnderbar + 1, kToTheLast);
if (IsNumeric(suffixNoUnderbar)) {
return L"_" + suffixNoUnderbar;
}
return L"";
}
getAutoAddedNumberSuffix()を使って、自動付加されたsuffixを見つける。
5桁数値のサフィックスまで対応 (インスタンスを5桁分作るということはないだろう。2桁は必要)。
取得したsuffixを使ってStringReplaceで取り除けばいい。
Unit2.cpp
String numberSuffix = getAutoAddedNumberSuffix(this->Name); // 自動付加されるもの。例 L"_2"
String nameNoSuffix = StringReplace(this->Name, numberSuffix, L"", TReplaceFlags()<<rfReplaceAll);
Author And Source
この問題について(c++ builder XE4, 10.2 Tokyo > 自動付加された数値のsuffix (例 "_123") を取得する実装), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/90c60cb9baa6c435b0cd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .