yield 返回空字符文字

Posted

技术标签:

【中文标题】yield 返回空字符文字【英文标题】:yield return empty character literal 【发布时间】:2013-03-25 04:49:16 【问题描述】:

我正在编写一个 Linq 扩展方法,从字符串输入中生成 p455w0rd。

public static IEnumerable<char> ToPasswordFormat(this IEnumerable<char> source)

        var enumerator = source.GetEnumerator();
        while (enumerator.MoveNext())
        
            switch((char)enumerator.Current)
            
                case 'a':
                    yield return '4';
                    break;
                case 'e':
                    yield return '3';
                    break;
                case 'l':
                    yield return '7';
                    break;
                case 'i':
                    yield return '!';
                    break;
                case ' ':
                    yield return '';
                    break;
                default:
                    yield return (char)enumerator.Current;
                    break;
            
        

如您所见,我想删除空格,但是当我使用 yield return ''; 时,它给了我错误 Empty character literal

'' 是什么,我怎样才能 return yield return nothing?

【问题讨论】:

不要产生任何东西,继续你的while循环。即case ' ': break; 您可以返回'\0'。 ***.com/a/3670513/284240 而不是使用巨大的switch,我建议你只构建一个Dictionary&lt;char, char&gt; 来映射值;它会简单得多。 【参考方案1】:

你不能yield return nothing。如果它是一个空格,解决方案将是 not yield return。注释掉那行,你应该很好。

'' 毫无意义。编译器会抱怨。没有“没有性格”这回事。

【讨论】:

+1 关键是给定'1','2',' ','3',你不想要像'1','2','','3' 这样的序列。您根本不想将 ' ' 替换为任何内容,所以不要将 yield 替换为任何内容。 There is no such thing as "no character". 嗯,实际上,有。 '\0'。 “空字符”。也就是说,它不应该在这种情况下使用。 nul 字符是有效字符。它有一个定义的值。它对许多编程语言都有特殊的意义,但它仍然是一个字符。 “no character”不能像“no int”一样存在,尽管我们经常说“no money”是指零:) @nvoigt 肯定不存在任何字符(或没有 int)。您只需要将类型从 char 更改为 char? @svick 即使是 Nullable 字符也总是有值。它只有一个 additional bool 值,告诉您 char 的值是对您有用还是只是随机垃圾。但它有一个价值,甚至是一个字符?不能有“没有价值”。您可以对其进行测试,如果 HasValue bool 为假,则检查可空字符中字符的值。它仍然是一个有值的字符。【参考方案2】:

    '' 毫无意义。没有“无字符”的概念——有 nul 字符,但与“无字符”不一样。将此与字符串进行比较,字符串可以是空引用(对字符串)或零长度字符串。

    @George Duckett 在对您的问题的评论中已经回答:只需从 ' ' 案例中删除 yield

【讨论】:

以上是关于yield 返回空字符文字的主要内容,如果未能解决你的问题,请参考以下文章

在spring mvc @ResponseBody中返回文字JSON字符串

函数返回的字符串文字的生命周期

对 Python 返回 JSON 作为字符串而不是文字感到困惑

在 DB2 SQL 和 PHP 中使用文字时返回的垃圾字符

前端如何在接口返回字符串类型的数值转化在浏览器中转化为对应文字并且逗号隔开

前端如何在接口返回字符串类型的数值转化在浏览器中转化为对应文字并且逗号隔开