2012-05-24 35 views
2

我試圖將包含someones名稱的字符串轉換爲「Last,First」以「First Last」。VB.NET:將包含「Lastname,Firstname」的字符串轉換爲「Firstname Lastname」

這是我過得怎麼樣,現在:

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

當我這樣做,我得到了以下錯誤:

ArgumentOutOfRangeException was unhandled

Index and length must refer to a location within the string

Parameter name: length

有人能解釋爲什麼我收到這個錯誤,我應該如何這樣做?

回答

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) 
+0

略相關 - 什麼是「C」類作爲您的通話分割的一部分?我以前沒有見過(直到現在,在這個問題的所有答案中。) –

+1

它將字符串轉換爲字符。 –

+0

啊......非常好。謝謝! –

1

簡單地說,只需要分割字符串

Dim originalName As String = "Last,First" 
Dim parts = name.Split(","C) 
Dim name As String = parts(1) & " " & parts(0) 
+1

我不會低估你,因爲你的答案是錯誤的。在Vb.net中,字符串的concactenation不使用'+',而是使用'&' –

+0

@johntotetwoo他的回答實際上是正確的,你可以在[Vb.net]中使用+和&來concactenate字符串(http: /msdn.microsoft.com/en-us/library/te2585xw(v=VS.71).aspx)。 &,是推薦使用的字符串,但兩者都可以工作 –

+0

@MarkHall是的,你可以同時使用,但是更推薦,請查看http://stackoverflow.com/questions/1088053/vb-net-string-操縱或 –

1

String.Substring的第二個參數是串的長度,而不是結束位置。出於這個原因,如果你使用n> 0的str.Substring(n, str.Length)(這將是子字符串的整個點),你總是會走出界限。

您需要在第一個子字符串中從name.Length減去name.IndexOf(",") + 1。或者像其他人所建議的那樣分割字符串。

0

如果您使用的Unix命令行 - 像Mac上的終端 - 你可以做這樣的:

假設您擁有一個包含最後逗號空間的第一文件類型的名字是這樣的:

Last1, First1 
Last2, First2 
Last3, First3 

好的,現在讓我們將它保存爲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 

告訴你的朋友......還是不要......

0

這會工作保持到海報格式。

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

結果NAME =「李四」

相關問題