2

「Last、First」という名前の文字列を「FirstLast」に変換しようとしています。

これが私が今やっている方法です:

name = name.Trim
name = name.Substring(name.IndexOf(",") + 1, name.Length) & " " & name.Substring(0, name.IndexOf(",") - 1)

これを行うと、次のエラーが発生します。

ArgumentOutOfRangeExceptionが処理されませんでした

インデックスと長さは、文字列内の場所を参照する必要があります

パラメータ名:長さ

誰かが私がこのエラーを受け取る理由と私がこれをどのように行うべきかを説明できますか?

4

5 に答える 5

6

これでエラーが発生します:

name.Substring(name.IndexOf(",") + 1, name.Length)

name.Lengthカンマの前の文字列の長さで減算する必要があります。

そのための最良の方法は、文字列を分割することです。

Dim oFullname as string = "Last, First"
Dim oStr() as string = oFullname.split(","c)
oFullname = oStr(1).trim & " " & oStr(0).trim
MsgBox (oFullname)
于 2012-05-24T00:18:36.877 に答える
1

単純に、文字列を分割するだけで済みます

Dim originalName As String = "Last,First"
Dim parts = name.Split(","C)
Dim name As String = parts(1) & "  " & parts(0)
于 2012-05-24T00:22:34.677 に答える
1

の2番目のパラメーターString.Substringは、終了位置ではなく、部分文字列の長さです。このため、str.Substring(n, str.Length)n> 0(サブストリングのポイント全体)を使用すると、常に範囲外になります。

name.IndexOf(",") + 1最初の部分文字列から減算する必要がありname.Lengthます。または、他の人が示唆しているように、文字列を分割するだけです。

于 2012-05-24T00:23:38.593 に答える
0

MacのターミナルのようにUnixコマンドラインを使用している場合は、次のように実行できます。

次のようなlast-comma-space-first型の名前を含むファイルがあるとします。

Last1, First1
Last2, First2
Last3, First3

OK、それをとして保存しましょうlast_comma_space_first.txt。この時点で、私があなたの特定の問題のために思いついたこのコマンドを使用することができます:

sed -E 's/([A-Za-z0-9]+), ([A-Za-z0-9]+)/\2 \1/g' last_comma_space_first.txt > first_space_last.txt

--->>>スクロール--->>>

完了です。さあ、そのfirst_space_last.txtファイルをチェックしてください!^_^次のようになります。

First1 Last1
First2 Last2
First3 Last3

友達に教えてください...またはしないでください...

于 2014-02-10T07:25:21.553 に答える
0

これは、ポスターの形式を維持することで機能します。

Name = "Doe,John"
Name = Replace(Name.Substring(Name.IndexOf(","), Name.Length - Name.IndexOf(",")) & " " & Name.Substring(0, Name.IndexOf(",")), ",", "")

結果名="JohnDoe"

于 2015-08-13T16:57:25.143 に答える