我正在研究哈希。我正在编写一个短语,我只能使用该短语的20个字符。
如何只阅读字符串的20个字符?
如果字符串相同,我该如何比较?
答案 0 :(得分:12)
比较字符串a
和b
if (String.Compare(a, 0, b, 0, 20) == 0)
{
// strings are equal
}
对于特定于文化的比较规则,您可以使用此重载,它接受StringComparison enum:
if (String.Compare(a, 0, b, 0, 20, StringComparison.CurrentCultureIgnoreCase) == 0)
{
// case insensitive equal
}
答案 1 :(得分:9)
要读取20个字符串的字符,可以使用substring方法。所以
myString = myString.Substring(0,20);
将返回前20个字符。但是,如果您的字符少于20个,则会抛出异常。您可以使用这样的方法为您提供前20个,或者如果它更短,则为所有字符串。
string FirstTwenty( string input ){
return input.Length > 20 ? input.Substring(0,20) : input;
}
然后比较它们
if(FirstTwenty(myString1).CompareTo(FirstTwenty(myString2)) == 0){
//first twenty chars are the same for these two strings
}
如果是UpperCase,则使用此功能
if (FirstTwenty(mystring1).Equals(FirstTwenty(myString2), StringComparison.InvariantCultureIgnoreCase))
{
//first twenty chars are the same for these two strings
}
答案 2 :(得分:4)
将字符串与字符串进行比较:
bool stringsAreEqual = str1 == str2;
从字符串中读取前20个字符(非常有把握的方式):
string first20chars = string.IsNullOrEmpty(str)
? str
: str.Length >= 20
? str.Substring(0, 20)
: str;
答案 3 :(得分:4)
C#string类中的子字符串返回一个新字符串,该字符串是该字符串的子字符串。子字符串从指定的给定索引开始,并扩展到给定的长度。
str = "This is substring test";
retString = str.Substring(5, 7); // "is"
在您的情况下,您必须使用
str.substring(0,20);
要比较两个字符串,请使用String.Equals()
String a = "Hello";
String b = "World";
if(a.Equals(b, true));
要忽略字符串的情况,您必须使用“true”。
答案 4 :(得分:3)
string input = "...";
string first20 = input.Substring(0, 20);
bool eq = String.Equals(first20, anotherString, StringComparison.Ordinal);
在MSDN上查看String.Substring(),String.Equals()。
答案 5 :(得分:0)
使用Linq!
if(new string(yourString.Take(20).ToArray()) == otherString.Take(20))
....
修改强> 如评论中所述,将IEnumerable更改回字符串。固定
您只能在枚举上执行此操作:
if(yourString.Take(20).SequenceEqual(other.AsEnumerable())
....
如果您只是想检查字符串的开头:
if(yourString.Take(20).SequenceEqual(other.Take(20))
....