小编Ste*_*eve的帖子

C#是否与JavaScript的encodeURIComponent()等效?

在JavaScript中:

encodeURIComponent("©?") == "%C2%A9%E2%88%9A"
Run Code Online (Sandbox Code Playgroud)

是否有C#应用程序的等价物?对于我使用的转义HTML字符:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将匹配转换为JS使用的正确十六进制格式.例如这段代码:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Run Code Online (Sandbox Code Playgroud)

返回" %a9%221a"for "©?"而不是"%C2%A9%E2%88%9A".看起来我需要将字符串拆分为字节或其他东西.

编辑:这是一个Windows应用程序中,唯一可用的项目System.Web有:AspNetHostingPermission,AspNetHostingPermissionAttribute,和AspNetHostingPermissionLevel.

.net javascript c# windows encoding

126
推荐指数
7
解决办法
9万
查看次数

目标C:块与选择器与协议

我经常发现自己编写的"实用程序"类可以在整个项目中重复使用.

例如,假设我有一个"地址簿"视图.我可能想使用我的地址簿来选择向谁发送电子邮件,或者可能是谁被添加到会议请求中.

我开发了这个视图控制器,因此它可以被电子邮件控制器和会议控制器使用,具有某种回调机制,让调用者知道用户已完成从地址簿中选择某人,或者他们已取消.

在这种情况下,似乎基本上有四种(合理的)方法;

  • 在AddressBookController上创建"AddressBookDelegate"协议和相应的委托属性.然后使用协议中定义的消息来传达结果(类似于UIActionSheetDelegate).

  • 在AddressBookController上创建一个"非正式""AddressBookDelegate"协议和相应的委托属性,但委托属性的类型将是"id",并将在运行时使用"respondsToSelector:"检查委托是否实现了我们的方法要求(似乎大多数框架的东西已经开始这样).

  • 传递AddressBookController一个代表委托的id,以及两个SEL,它们指定当用户选择用户或取消请求时要调用的方法.我看到的好处是; 假设一个控制器支持同时发送电子邮件和设置会议(我知道在这个例子中看起来像是糟糕的设计...但是可以想象一个更通用的情况,这对于实用程序类来说这似乎是完全合理的) - 在这种情况下你可以传递AddressBookController不同的SEL,具体取决于您是将用户添加到电子邮件,还是将用户添加到会议......对iVar的巨大改进表明控制器的"状态".

  • 传递AddressBookController两个块; 一个在用户从地址簿中选择某人时运行,另一个在用户取消请求时运行.

这些块对我来说非常有用,而且更加优雅,我发现自己几乎不知道何时不使用它们.

我希望StackOverflow社区中更有经验的成员比我能帮助他们对这个主题有所了解.

objective-c

51
推荐指数
2
解决办法
8211
查看次数

处理ARC中的指针到指针所有权问题

假设对象A有一个属性:

@property (nonatomic, strong) Foo * bar;
Run Code Online (Sandbox Code Playgroud)

在实现中合成为:

@synthesize bar = _bar;
Run Code Online (Sandbox Code Playgroud)

对象B操纵a Foo **,如本示例中对象A的调用:

Foo * temp = self.bar;
[objB doSomething:&temp];
self.bar = temp;
Run Code Online (Sandbox Code Playgroud)
  • 这个或类似的东西可以合法地完成吗?
  • doSomething:方法的正确声明是什么?

此外,假设在我有机会设置属性之前可以释放对象Bbar(从而获取指向的实例的所有权temp) - 我如何告诉ARC切换拥有的引用?换句话说,如果我想让以下示例代码段起作用,我将如何处理ARC问题?

Foo * temp = self.bar;    // Give it a reference to some current value
[objB doSomething:&temp]; // Let it modify the reference
self.bar = nil;           // Basically release whatever we have
_bar = temp;              // Since we're …
Run Code Online (Sandbox Code Playgroud)

objective-c automatic-ref-counting

41
推荐指数
2
解决办法
1万
查看次数

在C中,指向结构的指针总是指向其第一个成员吗?

假设我有许多C结构,我想要一组特定的函数来操作.

我想知道以下是否是合法的方法:

typedef struct Base {
     int exampleMember;
     // ...
} Base;

typedef struct Foo {
     Base base;
     // ...
} Foo;

typedef struct Bar {
     Base base;
     // ...
} Bar;

void MethodOperatesOnBase(void *);

void MethodOperatesOnBase(void * obj)
{
     Base * base = obj;
     base->exampleMember++;
}
Run Code Online (Sandbox Code Playgroud)

在示例中,您将注意到两个结构FooBarBase成员开头.

而且,在MethodOperatesOnBase那里,我将void *参数转换为Base *.

我想传递指针Bar和指向Foo此方法的指针,并依赖结构的第一个成员作为Base结构.

这是可以接受的,还是有一些(可能是编译器特定的)问题需要注意?(比如某种类型的打包/填充方案会改变结构的第一个成员的位置?)

c

32
推荐指数
1
解决办法
2万
查看次数

AlertDialog:如何删除视图上方和下方的黑色边框

之前已经问过这个问题:AlertDialog自定义标题有黑色边框

但没有得到满意的答复 - 并且缺少一些信息.


我正在尝试在没有标题的情况下在Android中创建自定义对话框,并且底部没有任何按钮.

但是,生成的对话框在视图的顶部和底部有黑色"边框"/"间距"/某些内容.

文档:

使用基本Dialog类创建的对话框必须具有标题.如果不调用setTitle(),则用于标题的空间仍为空,但仍然可见.如果您根本不需要标题,则应使用AlertDialog类创建自定义对话框.但是,因为使用AlertDialog.Builder类创建的AlertDialog最简单,所以您无权访问上面使用的setContentView(int)方法.相反,您必须使用setView(View).此方法接受View对象,因此您需要从XML中扩展布局的根View对象.

那就是我做的:

Welcome.java

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        builder.create().show();
    }
}
Run Code Online (Sandbox Code Playgroud)

welcomedialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@drawable/texturebg"
              android:id="@+id/layout_root"
              android:orientation="vertical"
              android:padding="40px">
    ...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

注:我已经尝试使用FrameLayout为根ViewGroup,而不是LinearLayout为每一个建议,我发现某处-但这并没有帮助.

结果

在此输入图像描述 在此输入图像描述


setBackgroundDrawable建议

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-dialog

30
推荐指数
3
解决办法
2万
查看次数

在二维比特阵列中寻找比特的连续区域

问题

我有一个位数组,表示"瓷砖"的二维"地图".此图像提供了位数组中位的图形示例:

位数组示例

我需要确定数组中存在多少个连续的"区域"位.在上面的例子中,有两个这样的连续"区域",如下所示:

连片区

瓷砖必须直接位于瓷砖的N,S,E或W上才能被认为是"连续的".对角线触摸的瓷砖不计算在内.

我到目前为止

因为这些位数组可能变得相对较大(大小为几MB),所以我故意避免在我的算法中使用任何类型的递归.

伪代码如下:

LET S BE SOURCE DATA ARRAY
LET C BE ARRAY OF IDENTICAL LENGTH TO SOURCE DATA USED TO TRACK "CHECKED" BITS
FOREACH INDEX I IN S
    IF C[I] THEN 
        CONTINUE 
    ELSE
        SET C[I]
        IF S[I] THEN
            EXTRACT_AREA(S, C, I)

EXTRACT_AREA(S, C, I):
    LET T BE TARGET DATA ARRAY FOR STORING BITS OF THE AREA WE'RE EXTRACTING
    LET F BE STACK OF TILES TO SEARCH NEXT
    PUSH I UNTO F
    SET T[I]
    WHILE F …
Run Code Online (Sandbox Code Playgroud)

algorithm graph-algorithm

30
推荐指数
1
解决办法
7222
查看次数

除了错误和警告之外,禁止所有make输出

我有一个makefile,它构建了一个由许多文件组成的项目,这些文件都需要构建.

为了使事情变得更复杂,我在每次调用gcc时都有一些包含的目录(因此每次调用gcc在命令行上看起来很长).

我想抑制除错误和警告之外的所有输出(这样我在make运行时就可以看到它们!)

有没有办法做到这一点?

makefile

29
推荐指数
4
解决办法
2万
查看次数

在Android.mk中使用Make的'通配符'功能

我在Android.mk构建文件中使用Make的wildcard功能时遇到问题.

我的其他makefile使用类似这样的行来指定"此文件夹中的所有.c文件":

CFILES := $(wildcard *.c)

在我的Android.mk文件中,我试过这个:

LOCAL_SRC_FILES := $(wildcard *.c)

但是,这与不包括任何文件具有相同的效果.

如果我手动包含文件,那么构建就像我期望的那样工作.

我想知道在评估此语句时,当前工作目录是否不是我的项目路径?如果是这样,我可以使用$(call my-dir)和通配符函数的组合来获取我想要的列表吗?

c android makefile android-ndk

14
推荐指数
1
解决办法
1万
查看次数

jQuery:动画删除CSS属性

我在视觉上使用jQuery"折叠"一些DOM元素(通过将它们的宽度缩小到0px并逐渐淡出它们),如下所示:

$(".slideoutmenu").animate({ width: 0, opacity: 0 }, function() { $(this).hide(); }); 
Run Code Online (Sandbox Code Playgroud)

这些元素的宽度可以变化,但是文档通过CSS正确布局而不设置特定宽度.

通常,要重新显示这些元素,我可以简单地执行以下操作:

$(".slideoutmenu").stop().show().css({ width: '', opacity: 1 });
Run Code Online (Sandbox Code Playgroud)

但是,我想反向动画这些元素(淡入和展开).

通常我会用类似的东西来做这件事:

$(this).children(".slideoutmenu").stop().show().animate({ width: 250, opacity: 1 });
Run Code Online (Sandbox Code Playgroud)

所以这是一个明显的尝试:

$(this).children(".slideoutmenu").stop().show().animate({ width: "", opacity: 1 });
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

最终,这里的问题是上面例子中固定的"250"数字.这不起作用,因为宽度是可变的.我需要结合在css setter中使用空字符串的结果和"animate"......但我无法弄清楚如何做到这一点.我试过用'undefined','null','-1',''替换"250",我搜索了谷歌......无济于事.

我理解我可能会对用户隐藏的元素做一些测量技巧 - 但我无法想象这不是一个相当普遍的问题 - 所以我希望有一种"标准"的方法来做到这一点,或者说它是建立在一些如何,我只是不知道它.

谢谢阅读.

跟进:

基于迈克尔的善意回应,我整理了一个小而快的脏插件,这样我就能完成内联.(也许有人可以扩展插件的想法并使其更好)

这是插件:

(function( $ ){

  $.fn.cacheCss = function( prop ) {  

    return this.each(function() {

      var $this = $(this);


        if (prop instanceof Array)
        {
            for (var pname in prop)
            {
                if ($this.data('cssCache-' + prop[pname]) != undefined)
                    continue; …
Run Code Online (Sandbox Code Playgroud)

css jquery

13
推荐指数
1
解决办法
1万
查看次数

SQL GROUP BY字段在所有情况下都是可交换的吗?

在简单查询中,GROUP BY字段的顺序与最终结果没有区别(忽略开发人员的易读性).

EG:SELECT COUNT(*) FROM People GROUP BY Age, Gender将产生与GROUP BY字段被翻转相同的结果.

一般来说,在什么条件下,GROUP BY字段的这种明显的可交换属性会崩溃?

我在这里寻找一般规则(EG:"任何包含依赖于其中一个分组字段的子表达式的表达式")

我很难想出一个关于排序重要的例子 - 但我的直觉告诉我它在某些情况下确实如此.

sql database

11
推荐指数
1
解决办法
751
查看次数