Dan*_*don 5 .net vb.net string foreach loops
Run Code Online (Sandbox Code Playgroud)'Why doesn't this work? Dim myStrings As String() = New String() {string1, string2, string3,} For Each s As String In myStrings If String.IsNullOrEmpty(s) Then s = "" End If s = "-" & s.Trim() & "-" Next
如果string1
包含"foo"
,我的意图是在循环执行后string1
包含"-foo-"
.我怎样才能做到这一点?
我猜这个代码会复制我的字符串并修改它们.如何在循环中修改字符串?
更新 我修改了代码以使用数组索引:
Run Code Online (Sandbox Code Playgroud)' It still doesn't work. Dim myStrings As String() = New String() {string1, string2, string3} For i As Integer = 0 To myStrings.Count() - 1 If String.IsNullOrEmpty(myStringss(i)) Then myStringss(i) = "" End If myStrings(i) = "-" & myStrings(i) & "-" Next
此代码的结果,特别是指每个元素的数组和索引,修改了数组,但我的字符串仍然具有相同的旧值.显然,初始化这样的数组只是将我的值复制到一个新数组中.如何在循环中修改原始值?
重点:该数组仅用于循环目的.我需要修改string1
,string2
以及string3
类似的,但是一旦这个循环是直通,没有为数组不能多用.哦,我的真实代码有超过3个字符串.
我只想说,如果我是使用更多的指针和引用一门语言,我想我也只会指向数组的指针string1
,string2, and
string3`.将这些字符串复制到数组中似乎是多余的.
此示例在C#中,但同样的原则适用.
string[] myStrings = new string[] { "temp", "temp2", "temp3" };
myStrings = myStrings.Select(x => "-" + x + "-").ToArray();
Run Code Online (Sandbox Code Playgroud)
输出:
"-temp-"" - temp2-"" - temp3-"
链接到MSDN文章:http://msdn.microsoft.com/en-us/library/bb548891.aspx
您还可以使用委托函数来检查字符串是否为空.将在提供VB解决方案和编辑时工作
编辑:
Dim myStrings As String() = _
{"apple", "banana", "mango", Nothing, "passionfruit", "grape"}
myStrings = _
myStrings.Select(Function(fruit) ("-" & fruit & "-")).ToArray()
Run Code Online (Sandbox Code Playgroud)
输出:
"-apple-"" - banana-"" - mango - "" - "" - passionfruit-"" - grape-"
编辑2:与第一次编辑相同但更具可读性
Private Function TESTER(ByVal fruit As String) As String
Return "-" & fruit & "-"
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myStrings As String() = _
New String() {"apple", "banana", "mango", Nothing, "passionfruit", "grape"}
myStrings = _
myStrings.Select(AddressOf TESTER).ToArray()
End Sub
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为字符串在 .Net 中是不可变的 -string1
如果不明确设置string1
为某个值,则无法更改 的值,即通过执行以下操作:
string1 = "Blah";
Run Code Online (Sandbox Code Playgroud)
(请注意,您可以i
通过(例如)使用for
而不是更改 myString 数组中第 th 个字符串值的值foreach
,但是从我收集的情况来看,这不是您想要做的)
为了解决您的问题,您需要更好地了解您要解决的问题,例如,您可以通过调整界面来避免以这种方式修改字符串引用的需要(请参阅此问题以获取灵感)
归档时间: |
|
查看次数: |
1583 次 |
最近记录: |