在C#中,我经常要将整数值限制为一系列值.例如,如果应用程序需要百分比,则用户输入中的整数不得小于零或大于一百.另一个例子:如果有五个网页可以访问Request.Params["p"],我希望值为1到5,而不是0或256或99999.
我常常写一个非常丑陋的代码,如:
page = Math.Max(0, Math.Min(2, page));
Run Code Online (Sandbox Code Playgroud)
甚至是丑陋的:
percentage =
(inputPercentage < 0 || inputPercentage > 100) ?
0 :
inputPercentage;
Run Code Online (Sandbox Code Playgroud)
在.NET Framework中没有更智能的方法来做这些事情吗?
我知道我可以编写一个通用的方法int LimitToRange(int value, int inclusiveMinimum, int inlusiveMaximum)并在每个项目中使用它,但也许框架中已经有一个神奇的方法了?
如果我需要手动执行,那么在第一个示例中执行我正在执行的操作的"最佳"(即,更简单,更快速)的方法是什么?像这样的东西?
public int LimitToRange(int value, int inclusiveMinimum, int inlusiveMaximum)
{
if (value >= inclusiveMinimum)
{
if (value <= inlusiveMaximum)
{
return value;
}
return inlusiveMaximum;
}
return inclusiveMinimum;
}
Run Code Online (Sandbox Code Playgroud) 计算两个日期之间总秒数的最佳方法是什么?到目前为止,我已尝试过以下方面:
$delta = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;
Run Code Online (Sandbox Code Playgroud)
但是,daysDateInterval对象的属性似乎在当前的PHP5.3版本中被破坏(至少在Windows上,它总是返回相同的6015值).我还试图以一种不能保存每个月(轮数到30天),闰年等天数的方式来做到这一点:
$seconds = ($delta->s)
+ ($delta->i * 60)
+ ($delta->h * 60 * 60)
+ ($delta->d * 60 * 60 * 24)
+ ($delta->m * 60 * 60 * 24 * 30)
+ ($delta->y * 60 * 60 * 24 * 365);
Run Code Online (Sandbox Code Playgroud)
但是我真的不满意使用这种半成品解决方案.
我在搜索我的SQLite数据库时遇到问题,该数据库包含用西里尔字符编写的数据.如果关键词也是西里尔字母,那么一切都很好,但如果没有,那么我就无法在我的Android应用程序中得到结果.
有没有人知道我怎样才能实现搜索cyrilic数据,无论关键字的字符集?谢谢
我对'unordered_map'这个名字感到很困惑.该名称表明钥匙根本没有订购.但我一直认为它们是按哈希值排序的.或者是错误的(因为这个名字意味着他们没有订购)?
或者说不同:是吗?
typedef map<K, V, HashComp<K> > HashMap;
Run Code Online (Sandbox Code Playgroud)
同
template<typename T>
struct HashComp {
bool operator<(const T& v1, const T& v2) const {
return hash<T>()(v1) < hash<T>()(v2);
}
};
Run Code Online (Sandbox Code Playgroud)
同样的
typedef unordered_map<K, V> HashMap;
Run Code Online (Sandbox Code Playgroud)
?(好吧,不完全是,STL会在这里抱怨,因为可能有键k1,k2,k1 <k2和k2 <k1都没有.你需要使用multimap并覆盖等号检查.)
或者不同的是:当我遍历它们时,我可以假设密钥列表按其哈希值排序吗?
是否有可能为iPhone构建一个xcode项目并让它在没有实际运行应用程序的情况下将结果安装在连接的设备上?我目前正在使用Build&Run,但我正在调试点对点游戏,所以我必须为两个不同的设备构建和运行,在每个设备上停止任务然后在模拟器上构建和运行所以这三个都有最新版本.我很乐意在这个过程中不必等待应用程序在这两个设备上运行.
我有大量记录要存储在 SQL Server 2008 数据库中。每条记录都有一个 SHA-1 哈希值。显然,以字符串形式存储 SHA 将占用 80 个字节,而如果存储为字节则为 20 个字节。
查询数据库时,SQL 更擅长:
我需要帮助决定如何存储散列,因为它对数据库有巨大的存储影响。谢谢你的帮助。
我在使用一些javascript时遇到了一些麻烦.我正在使用jQuery动态地向表中添加行.此外,javascript是从一些PHP和Kohana代码生成的.
这是脚本.
<script type="text/javascript">
function delExtensionNumber(element){
$(element).prev().attr('value', 'X');
$(element).parent().parent().hide();
}
function addExtensionNumber(){
lines = <?php echo form::dropdown($ext_id."[did]", $lines, ''); ?>;
extensions = <?php echo form::dropdown($ext_id."[extension]", $phones, ''); ?>;
$('#line-extensions > tbody:last').append('<tr><td>'+lines+'</td><td>'+extensions+'</td><td><input type="hidden" name="'+<?php echo $ext_id;?>+'[state]" value="0" /><a class="hide" onclick="delExtensionNumber(this)"></a></td></tr>');
<?php $ext_id++; ?>
}
</script>
Run Code Online (Sandbox Code Playgroud)
这在Firefox中运行良好.但在IE和Chrome中它不起作用.谷歌浏览器中没有任何事情发生.在IE中,我在页面上收到错误.该错误是语法错误.它不喜欢字线后面的<字符.
好的,所以我想我最好在这个字符串周围添加一些引号.但是......当我这样做时,没有任何作用.
我正在尝试检查XML响应中是否存在用户.
当用户不存在时,响应如下:
<ipb></ipb>
Run Code Online (Sandbox Code Playgroud)
对于我(在代码中)验证用户不存在的最佳方法是什么?我在考虑检查它是否没有任何子元素,但我有点困惑.
谢谢您的帮助!
public void LoadUserById(string userID)
{
doc = XDocument.Load(String.Format("http://www.dreamincode.net/forums/xml.php?showuser={0}", userID));
if (doc.DescendantNodes().ToList().Count < 1)
{
userExists = false;
}
else
{
userExists = true;
}
}
Run Code Online (Sandbox Code Playgroud) 我有相对较小的(40-80个节点)立方(3-regular)平面图,我必须决定它们的汉密尔顿性.我知道这个任务是NP完全的,但我希望渐近指数时间算法对我感兴趣的图形大小来说非常快.
.net ×2
c# ×2
php ×2
android ×1
asp.net ×1
c++ ×1
date ×1
datetime ×1
hashmap ×1
html ×1
iphone ×1
javascript ×1
kohana ×1
linq-to-xml ×1
math ×1
page-title ×1
performance ×1
planar-graph ×1
search ×1
sql-server ×1
sqlite ×1
utf-8 ×1
xcode ×1
xml ×1