0

NSISでテキストボックスの値をトリミングしたいので、以下のリンクを使用しました

http://nsis.sourceforge.net/Remove_leading_and_trailing_whitespaces_from_a_string 私の解決策の問題は、上記の例ではテキスト全体を削除し、その後にテキストが続くということです。たとえば、私のテキストはこの「名」のようなものです。トリムメソッドを呼び出すと、名前全体が削除され、結果が「最初」になります。しかし、先頭と末尾の空白のみを削除したい。間のスペースではありません。

どうすればこれを達成できますか?

4

1 に答える 1

0

私のために働く:

Function Trim
    Exch $R1 ; Original string
    Push $R2
Loop:
    StrCpy $R2 "$R1" 1
    StrCmp "$R2" " " TrimLeft
    StrCmp "$R2" "$\r" TrimLeft
    StrCmp "$R2" "$\n" TrimLeft
    StrCmp "$R2" "$\t" TrimLeft
    GoTo Loop2
TrimLeft:
    StrCpy $R1 "$R1" "" 1
    Goto Loop
Loop2:
    StrCpy $R2 "$R1" 1 -1
    StrCmp "$R2" " " TrimRight
    StrCmp "$R2" "$\r" TrimRight
    StrCmp "$R2" "$\n" TrimRight
    StrCmp "$R2" "$\t" TrimRight
    GoTo Done
TrimRight:
    StrCpy $R1 "$R1" -1
    Goto Loop2
Done:
    Pop $R2
    Exch $R1
FunctionEnd
!define Trim "!insertmacro Trim"
 !macro Trim ResultVar String
  Push "${String}"
  Call Trim
  Pop "${ResultVar}"
!macroend


Section

${Trim} $0 " First Name "
MessageBox mb_ok "|$0|"

SectionEnd

質問を編集して、失敗するサンプルコードを含めることができますか?

于 2013-01-21T16:58:29.463 に答える