我有一个包含特殊字符的字符串('★☆☽☾☁')我希望★打印出星期一,☆星期二,☽星期三,☾星期四, ☁星期五。我很抱歉,因为我对vb.net很新,所以我对它只有非常基本的了解。我已经尝试过了:
Dim today As Date = Date.Today
Dim dayIndex As Integer = today.DayOfWeek
Dim specialcharacters() As Char = "★☆☽☾☁"
If dayIndex < DayOfWeek.Monday Then
txtRandomCharacter.Text = specialcharacters
End If
如果有人能提供帮助,我将非常感激,谢谢!
答案 0 :(得分:0)
(重新编辑以更正我以前使用VBA而不是VB.net的错误)
是。注意到你的数组中只有5个Char(specialcharacters()
)我假设你只想标记星期一到星期五。但是,这个问题的答案可以延伸到整周。使用原始代码作为基础:
Dim txtRandomCharacter As Char =“”
Dim specialcharacters() As Char = "★☆☽☾☁"
Dim today As Date = Date.Today
Dim dayIndex As Integer = today.DayOfWeek
If (dayIndex - 1) <= UBound(specialcharacters) Then
txtRandomCharacter = specialcharacters(dayIndex - 1)
End If
但是,请注意处理基于0的阵列所需的心理体操。
Dim dayIndex As Integer = Weekday(today,vbMonday)
也是有效的代码。
可以在http://www.excelfunctions.net/vba-weekday-function.html找到Weekday
的说明。
specialcharacters
是一个数组,而不是字符串,因此您可以直接访问数组元素。我已经使用了UBound
函数,因此通过调用高于数组的下标(dayIndex
),您不会意外地获得数组越界错误。
另一种选择是将Mid
或Substr
函数与字符串一起使用。在这个例子中,为了简洁,我还连接了一些代码。
Dim txtRandomCharacter As String = ""
Const specialcharacters As String = "★☆☽☾☁"
Dim dayIndex As Integer = Date.Today.DayOfWeek ' - DayOfWeek.vbMonday + 1
txtRandomCharacter = If(dayIndex >= 0 And dayIndex <= Len(specialcharacters), specialcharacters.Substring(dayIndex - 1, 1), "X")
IIF
声明中的'X'选项是我的测试补充。你也可以使用“”。不幸的是,VB.Net中的Substr
函数比Mid函数的容忍度稍差,因此对dayIndex
的有效值进行了额外的检查。 Substr
基于0。
使用容忍索引的Mid
函数&gt;字符串的长度但必须> 0(因此If语句):
Dim txtRandomCharacter As String = ""
Const specialcharacters As String = "★☆☽☾☁"
Dim dayIndex As Integer = Date.Today.DayOfWeek ' - DayOfWeek.vbMonday + 1
txtRandomCharacter = Mid(specialcharacters, If(dayIndex > 0, dayIndex, Len(specialcharacters) + 1), 1)
检查您的Option Base
以确定您的阵列默认情况下是0还是1开始。specialcharacters()
的范围可以是0-4或1-5,具体取决于此设置 - 这意味着可能或可能不与Weekday
函数对齐,该函数始终在1-7范围内(或DayofWeek
函数,范围从0到6)。
关键是要理解字符串和字符数组之间的区别。
Mid
或Substr
函数从字符串中获取字符。检查以确保您没有传递超出范围的索引。要认识到的另一点是要了解如何列举一周的日子。 MSDN参考站点仅记录枚举,并且不提供等效整数 - IDE提供了更多信息。了解您的计算是从0
还是1
开始,以及是否必须调整索引以解决此问题,这一点非常重要。
答案 1 :(得分:0)
这是怎么回事?
Const specialcharacters() As Char = "★☆☽☾☁"
Dim today As Date = Date.Today
Dim dayIndex As Integer = today.DayOfWeek
If dayIndex >= DayOfWeek.Monday andalso dayIndex <= DayOfWeek.Friday Then
txtRandomCharacter.Text = specialcharacters(dayIndex - dayOfWeek.Monday)
End If
这是有效的,因为DayOfWeek.Monday到DayOfWeek.Friday的值是连续的。