我正在做一个人物比较,我不明白为什么这不起作用。我已经尝试了下面列出的不同选项,并尝试了后空格附近的连字符和数字键盘上的连字符。我尝试将其转换为字符字节值,但失败了。我已经将‘-’转换为char变量,它仍然失败吗?
解决这一问题的办法是什么?
[DBG]: PS C:\> $line.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
[DBG]: PS C:\> $line[$i]
–
[DBG]: PS C:\> $line[$i] -eq "-"
False
[DBG]: PS C:\> $line[$i] -eq "-"
False
[DBG]: PS C:\> [byte[]][char[]]"-"
45
[DBG]: PS C:\> [byte[]][char[]]$line[$i]
Cannot convert value "–" to type "System.Byte". Error: "Value was either too large or too small for an unsigned byte."
At line:1 char:1
+ [byte[]][char[]]$line[$i]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastIConvertible
[DBG]: PS C:\> $line[$i] -eq "\-"
False
[DBG]: PS C:\> $line[$i] -eq "`-"
False
[DBG]: PS C:\> $line[$i] -eq '\-'
False
[DBG]: PS C:\> $line[$i] -eq '`-'
False
[DBG]: PS C:\> $line[$i] -like '-'
False
[DBG]: PS C:\> $line[$i] -like "-"
False
[DBG]: PS C:\> $line[$i] -match '-'
False
[DBG]: PS C:\> $line[$i] -match "-"
False
[DBG]: PS C:\> $line[$i].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Char System.ValueType
[DBG]: PS C:\> $line[$i] | gm
TypeName: System.Char
Name MemberType Definition
---- ---------- ----------
CompareTo Method int CompareTo(System.Object value), int CompareTo(char value), int IComparable.CompareTo(System.Object obj), int IComparable[char].CompareTo(char other)
Equals Method bool Equals(System.Object obj), bool Equals(char obj), bool IEquatable[char].Equals(char other)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)
ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)
ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)
ToString Method string ToString(), string ToString(System.IFormatProvider provider), string IConvertible.ToString(System.IFormatProvider provider)
ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
[DBG]: PS C:\> [char]$ch = '-'
[DBG]: PS C:\> $ch.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Char System.ValueType
[DBG]: PS C:\> $line[$i] -eq $ch
False
2条答案
按热度按时间2admgd591#
如果在搜索中发现这一点并对某人有帮助,请尝试如下所示的比较
os8fio9y2#
标识Unicode字符的新脚本:
此外,还有一个用于破折号的regex Unicode类: