小编Div*_*ero的帖子

为什么一些相同的字符串不在.NET中实现?

string s1 = "test";
string s5 = s1.Substring(0, 3)+"t"; 
string s6 = s1.Substring(0,4)+"";   
Console.WriteLine("{0} ", object.ReferenceEquals(s1, s5)); //False
Console.WriteLine("{0} ", object.ReferenceEquals(s1, s6)); //True
Run Code Online (Sandbox Code Playgroud)

字符串s5和s6都具有与s1相同的值("test").基于字符串实习概念,这两个语句必须已评估为true.有人可以解释为什么s5没有与s1相同的参考?

.net c# string

5
推荐指数
1
解决办法
201
查看次数

为什么在.NET中,哈希表和字典不使用Equals()方法而不是GetHashCode进行键比较?

在.NET中,只要我们为类重写Equals()方法,通常的做法就是也重写GetHashCode()方法。当在哈希表和字典中使用该对象时,这样做将确保更好的性能。仅当两个键的GetHashCode()值相同时,它们才视为在Hashtable中相等。我的问题是,为什么Hashtables不能使用Equals()方法比较键?那会消除重写GetHashCode()方法的负担。

.net c# hashtable equals

3
推荐指数
1
解决办法
637
查看次数

RegEx在javascript中不使用反斜杠

我正在尝试使用以下模式验证字符串.以3位数字开头,后跟连字符后跟2位数字,以4位数字结尾.例如:123-45-6789我需要将模式作为字符串变量传递给RegExp对象(我从html元素属性中获取模式值),因此我使用双斜杠转义了RegExp.令我惊讶的是,我看到了奇怪的结果.

var pattern = "^\\d{3}-\\d{2}-\\d{4}$";
var inputRegex = new RegExp(pattern, "g");
console.log(inputRegex.test('132-45-7899')); //True
console.log(inputRegex.test('132-45-7899')); //False
console.log(inputRegex.test('132-45-7899')); //True
console.log(inputRegex.test('132-45-7899')); //False
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?这种结果不一致的原因是什么?

编辑:现在我理解为什么结果不一致,但我的实际问题仍然没有解决.HTML elem如下所示

情景1:

<input data-val-regexp="^\\d{3}-\\d{2}-\\d{4}$" id="ticketNumber">

var regexPattern = input.attr("data-val-regexp");
var inputRegex = new RegExp(regexPattern);
return inputRegex.test('123-45-6789'); // False
Run Code Online (Sandbox Code Playgroud)

当我检查时,inputRegex.source是"^ \\ d {3} - \\ d {2} - \\ d {4} $"

场景2:如果我使用字符串文字分配regexPattern一切正常.

var pattern = "^\\d{3}-\\d{2}-\\d{4}$";
var inputRegex = new RegExp(pattern);
console.log(inputRegex.test('132-45-7899')); //True
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,inputRegex源值是"^\d {3} - \d {2} - \d {4} $"

为什么反斜杠在第二个场景中被转义,而在第一个场景中没有?为了使场景1有效,需要做些什么?

javascript regex jquery

0
推荐指数
1
解决办法
389
查看次数

标签 统计

.net ×2

c# ×2

equals ×1

hashtable ×1

javascript ×1

jquery ×1

regex ×1

string ×1