小编Chr*_*ins的帖子

如何检查有效的Base64编码字符串

在C#中是否有一种方法可以查看字符串是否为Base 64编码,而不仅仅是尝试转换它并查看是否存在错误?我有这样的代码:

// Convert base64-encoded hash value into a byte array.
byte[] HashBytes = Convert.FromBase64String(Value);
Run Code Online (Sandbox Code Playgroud)

我想避免如果该值不是有效的base 64字符串,则会出现"Base-64字符串中的无效字符"异常.我想检查并返回false而不是处理异常,因为我希望有时这个值不会是一个基本的64字符串.在使用Convert.FromBase64String函数之前有没有办法检查?

谢谢!

更新:
感谢您的所有答案.这是一个你可以使用的扩展方法到目前为止似乎确保你的字符串将传递Convert.FromBase64String而没有异常.当转换为base 64时,.NET似乎忽略所有尾随和结尾空格,因此"1234"有效,因此"1234"

public static bool IsBase64String(this string s)
{
    s = s.Trim();
    return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);

}
Run Code Online (Sandbox Code Playgroud)

对于那些对测试性能与捕获和异常感到疑惑的人来说,在大多数情况下对于这个基础64事物来说,检查比捕获异常直到达到一定长度更快.它的长度越小越快

在我非常不科学的测试中:对于字符长度100,000 - 110000的10000次迭代,它首先测试快了2.7倍.

对于字符长度为1至16个字符的1000次迭代,总共16,000次测试,它的速度提高了10.9倍.

我确信有一点可以用基于异常的方法进行测试.我只是不知道那是什么意思.

c# validation base64

113
推荐指数
8
解决办法
10万
查看次数

有没有办法在asp.net中从CultureInfo确定文本方向?

我环顾四周,但我无法弄清楚这一点,有些语言是从右到左阅读和书写,而不是从左到右.能够以某种方式从CultureInfo对象获取文本方向似乎是明智的,但我还没有在任何地方看到它.我错过了什么吗?

c# asp.net localization

42
推荐指数
1
解决办法
6574
查看次数

在.NET中将数组或列表作为属性返回是否可以?

我正在阅读MSDN上有关do的一些文档,而不是关于某些内容是作为属性还是作为方法实现的.我特别遇到一个规则,我有一个问题.

如果"操作返回数组"使用方法(而不是属性).

页面在这里:在属性和方法之间进行选择

使用操作返回数组的方法,因为要保留内部数组,您必须返回数组的深层副本,而不是对属性使用的数组的引用.这一事实,加上开发人员使用属性就好像是字段一样,可能会导致代码效率非常低下.

我知道属性的get方法会返回对数组的引用,这样即使没有set也可以更改数组.在他们提供的示例中,每次访问属性时,他们都会对数组进行深层复制,我想这是为了避免发生这种情况的可能性,而这反过来效率非常低.

如果属性刚刚返回引用并且没有完成所有复制,那么效率不高,对吧?并且使用方法而不是属性不会自动保护列表不被修改.这几乎是相同的情况,你仍然需要一个深层复制.

使用属性只是返回对数组的引用总是不好的做法?如果您希望调用者能够修改数组,或者您不关心它们是否修改它,该怎么办?它仍然是坏的,为什么,如果是这样,什么是允许调用者修改的正确方法?

.net c# performance coding-style

23
推荐指数
1
解决办法
2631
查看次数

Angular 1.3动画在firefox中不起作用

我们有一个ng-repeat指令,它使用ng-hide进行动画显示并根据选定的索引进行隐藏.动画在除Firefox之外的所有浏览器中都能正常工作.

在Firefox中,.ng-hide-remove的动画不起作用.你可以看到它移动了一点并停下来.我使用的是Firefox版本33.0但我也试过32.0.

只有Angular 1.3才会出现此问题,相同的代码在Firefox中使用角度版本1.2.

这是重复代码

 <div class="item" ng-repeat="item in items" ng-show="$index == selectedItem" >
  Item: {{item}}
</div>
Run Code Online (Sandbox Code Playgroud)

以下是css样式:

.item {
  position:absolute;
  top:50px;
  left:200px;
  border:solid 1px black;
  padding:10px;
  background-color:#f5f5f5;
  width:100px;
}

.item.ng-hide-add {
  -webkit-animation: fadeInLeft 1.5s;
  animation: fadeInLeft 1.5s; 
}

.item.ng-hide-remove {
  -webkit-animation: fadeOutRight 1.5s;
  animation: fadeOutRight 1.5s; 
}
Run Code Online (Sandbox Code Playgroud)

这是一个包含完整演示的plunker:http://plnkr.co/edit/UFI6eWqfnDcCkpIe6d1i?p = preview

任何帮助将非常感激.我做错了什么,或者这是我遇到的真正的角色错误?谢谢!

javascript css firefox angularjs ng-animate

6
推荐指数
1
解决办法
1070
查看次数

在asp.net中ValidationProperty和ValidationPropertyAttribute元数据属性有什么区别?

简单的问题,但我似乎无法找到答案.

元数据ValidationPropertyValidationPropertyAttribute元数据属性有什么区别?

c# asp.net validation attributes

4
推荐指数
1
解决办法
915
查看次数

如何在SQL Server中创建参数化XPath查询?

我试图在SQL服务器中编写一个参数化查询,该参数使用参数值作为XPath的一部分,但它似乎不像我期望的那样工作.这是我的样本:

create table ##example (xmltest xml)

declare @LanguagePath varchar(75)

set @LanguagePath = '(/languages/language[@id="en-US"])[1]'
insert into ##example 
values ('<languages>
            <language id="en-US">c</language>
            <language id="es-ES">c</language>
        </languages>')

insert into ##example 
values ('<languages>
            <language id="en-US">b</language>
            <language id="es-ES">b</language>
        </languages>')


insert into ##example 
values ('<languages>
            <language id="en-US">a</language>
            <language id="es-ES">a</language>
        </languages>')

--This is a working statement:
--select *  from ##example 
--order by xmltest.value('(/languages/language[@id="en-US"])[1]', 'varchar')


declare @SQL nvarchar(4000)
set @SQL = '
select *  from ##example 
order by xmltest.value(@LanguagePath1, ''varchar'')
'

exec sp_executesql @SQL, N'@LanguagePath1 varchar(75)',  @LanguagePath1 = @LanguagePath; …
Run Code Online (Sandbox Code Playgroud)

xml sql sql-server security sql-server-2005

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

使用带有类型化数据集表适配器的"使用"语句

简单的问题.使用类型化数据集表适配器时使用using语句很重要吗?我在网上看到的大多数例子都不使用using语句.

using (Data_ItemTableAdapter adapter = new Data_ItemTableAdapter())
{

    DataItemTable = a.GetDataByDataItemID(DataItemID);
    // more code here
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!!

编辑:似乎是一个普遍的共识是,它可能是在这种情况下使用"使用"是个好主意,因为它肯定不会伤害,它并不需要太多的努力.只是不确定是否值得回顾这个旧项目并更改所有代码.感谢您的建议!

.net c# dispose using

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

如何在Visual Studio 2010中使选定的html标记突出显示与在Visual Studio 2008中一样

当突出显示当前所选html元素的开始和结束标记时,有没有办法让VS 2010更像VS 2008.

在Visual Studio 2008中,选定的html标记只是在元素的开始和结束标记上加上粗体字和<>字符,并且属性保持正常.

我可以在VS 2010中找到的唯一选项是突出显示整个选定的标签,属性和所有选项.我没有找到任何可以控制所选标签本身的东西.

有人知道一种让它更像旧编辑器的方法吗?

谢谢!

ide visual-studio-2010 visual-studio

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