我想在调试或编辑文本时通过用合理的 Unicode 代码点替换它们并将它们着色为灰色而不是黑色来显示空白字符。
例如,我想替换
SPACE U+0020与 MIDDLE DOT · U+00B7 NO-BREAK SPACE U+00A0与 MEDIUM SMALL WHITE CIRCLE ⚬ U+26AC RIGHTWARDS ARROW → U+2192为 TAB U+0009 . CARRIAGE RETURN U+000D newline/LINE FEED U+000A . PILCROW SIGN ¶ U+00B6因为它不直观地对应于任何一个,而是一个新段落的概念。还有DOWNWARDS ARROW WITH CORNER LEFTWARDS ↵ U+21B5但同样,它似乎更像是一个组合符号,而不是单独代表任何一个。LEFTWARDS ARROW ← U+2190为 carriage return- DOWNWARDS ARROW ↓ U+2193为 newline .CARRIAGE RETURN ␍ U+240D , 符号为 LINE FEED ␊ U+240A和 SYMBOL FOR NEWLINE  U+2424但细节很难在他们身上看到。\r和 \n有两个原因,r和 n看起来有点相似(不多,但有点相似)并且需要两个字符来显示它们而不是一个。但是,如果我没有得到更好的建议,我也可以使用 DOWNWARDS ARROW WITH CORNER LEFTWARDS ↵ U+21B5用于回车和 RIGHTWARDS ARROW WITH CORNER DOWNWARDS ↴ U+21B4换行。
最佳答案
正如你所说,U+21B5 (↵) 是一个不错的回车选择。请注意,它是回车键上的符号,自电动打字机时代以来一直用于此目的。这也是名称的由来,因为它实际上会返回承载纸张的托架并将其移动到色带头下方。因此,我认为它已经在键盘用户中根深蒂固,可以直观地识别出来。
但是,由于您已经注意到对可见性的担忧,请考虑 U+23CE (⏎)。此符号是 UNICODE 标准的一部分,用于表示退货的明确目的;但它可能被解释为一般的新行,这通常是回车和换行的组合(取决于系统)。U+21B5 (↵) 是 UNICODE 箭头块的一部分,而 U+23CE (⏎) 是“杂项技术”块的一部分。第二个更接近于对像您这样的技术考虑有用的东西,而不是常规箭头。
这给我们留下了换行符。当你开始思考它究竟是什么时,甚至返回箭头的选择都变得可疑。换行基本上是向下移动一行的指令。回车只是将插入符号(“回车”)移回行的开头。换行不会 有 与回车符组合,回车符实际上也不必与换行符组合(尽管通常不这样做是毫无意义的)。在打字机上,这开始变得有意义。键入一行后,您会将笔架摆动回起点,然后向上滚动纸张。基本上是回车+换行。现在您明白了为什么“新行”出于历史目的将这两者结合起来可能有意义,以及为什么它们可以按任一顺序使用。从技术上讲,您可以在不回车的情况下进行换行,然后在上一行中断的列中继续输入。这使我们的 ↵/⏎ 受到质疑的原因是该符号似乎暗示了回车和换行。事实上,在电动打字机和文字处理器上,它通常会产生一个全新的行。
那么,如何表示换行符呢?向下的箭头似乎是一个直观的选择,但我们可能也需要重新考虑我们的回车。 U+21E9 (向下的白色箭头,⇩)在视觉上(可能,鉴于字形可能会有所不同)与 ⏎ 最一致。但如果我们继续这样做,你不妨使用 U+21E6 (向左的白色箭头,⇦)为您的回车。
有这么多选择怎么选?嗯,我个人认为技术上优越的选择是来自 UNICODE“控制图片”块的字符。这些是 U+240A (␊) 用于换行,和 U+240D (␍) 用于回车。它们也吸引了我的程序员,因为它们的代码点的最后一个字节对应于它们的 ASCII 代码。但我知道它们在屏幕上很难辨认,而可用性可能更重要。但是当被要求显示所有符号时,许多文本编辑器都会对此进行一些变体。
所以我会说选项是......
关于html - 如何使用 Unicode 显示空白字符以进行调试/编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29180143/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
在我的Rails(2.3,Ruby1.8.7)应用程序中,我需要将字符串截断到一定长度。该字符串是unicode,在控制台中运行测试时,例如'א'.length,我意识到返回了双倍长度。我想要一个与编码无关的长度,以便对unicode字符串或latin1编码字符串进行相同的截断。我已经了解了Ruby的大部分unicode资料,但仍然有些一头雾水。应该如何解决这个问题? 最佳答案 Rails有一个返回多字节字符的mb_chars方法。试试unicode_string.mb_chars.slice(0,50)