草庐IT

ruby - 如何为字母、元音和辅音等德语字符类编写正则表达式?

例如,我设置了这些:L=/[a-z,A-Z,ßäüöÄÖÜ]/V=/[äöüÄÖÜaeiouAEIOU]/K=/[ßb-zBZ&&[^#{V}]]/因此/(#{K}#{V}{2})/匹配"azAZßäÜ"中的"ßäÜ"。有没有更好的方法来处理它们?我能否将这些常量放在我的Ruby安装文件夹中某个文件中的模块中,这样我就可以在我在计算机上编写的任何新脚本中包含/要求它们?(我是新手,我知道我混淆了这个术语;请纠正我。)此外,我能否只获取元字符\L、\V和\K(或任何尚未在Ruby中设置)以在正则表达式中代表它们,所以我不必一直做字符串插值? 最佳答案

ruby-on-rails - 从字符串中删除重音符号/变音符号,同时保留其他特殊字符(尝试过 mb_chars.normalize 和 iconv)

有一个很similarquestion已经。其中一种解决方案使用如下代码:string.mb_chars.normalize(:kd).gsub(/[^x00-\x7F]/n,'').to_s这会产生奇迹,直到您注意到它还删除了空格、点、破折号,谁知道还有什么。我不太确定第一个代码是如何工作的,但是它可以去除仅重音吗?或者至少得到一份要保留的字符列表?我对正则表达式的了解很少,但我尝试了(无济于事):/[^\-x00-\x7F]/n#Soitwouldleavethedashalone我将要做这样的事情:string.mb_chars.normalize(:kd).gsub('-','

ruby 正则表达式 : replace non-word chars that are not space chars

如何替换所有也不是空格字符(\s)的非单词字符(\W)?这是所需的功能:"the(quick)!brown\nfox".gsub(regex,"#")=>“#quick##brown\nfox” 最佳答案 "the(quick)!brown\nfox".gsub(/[^\w\s]/,"#")通过使正则表达式替换任何不是单词字符或空格字符的内容。 关于ruby正则表达式:replacenon-wordcharsthatarenotspacechars,我们在StackOverflow上找到

ruby - 如何按字母顺序对字符串的字符进行排序?

对于Array,有一个漂亮的sort方法来重新排列元素的顺序。我想为字符串实现相同的结果。例如,我有一个字符串str="String",我想用一种简单的方法将它按字母顺序排序为"ginrSt"。是否有一种本地方法可以启用此功能,或者我应该包含来自Enumerable的mixin? 最佳答案 charsmethod返回字符串字符的枚举。str.chars.sort.join#=>"Sginrt"不区分大小写排序:str.chars.sort(&:casecmp).join#=>"ginrSt"

ruby 1.9 : how can I properly upcase & downcase multibyte strings?

因此matz决定在ruby​​1.9.1中将upcase和downcase限制为/[A-Z]/i。ActiveSupport::Multibyte长期以来在ruby​​1.8.x中通过String#mb_chars进行了很好的i18n大小写调整。但是在ruby1.9.1下试了一下,好像不行。这是我编写的一个简单的测试脚本,以及我得到的输出:$cattest.rb#encoding:UTF-8puts("@#{RUBY_VERSION}"+(__ENCODING__rescue$KCODE).to_s)sd,su="Iñtërnâtiônàlizætiøn","IÑTËRNÂTIÔNÀL

javascript - 如何匹配 javascript 正则表达式中的平衡定界符?

我本来以为这个问题是不可能的;据我所知,Javascript的正则表达式风格既没有递归插值,也没有漂亮的.NET平衡组功能。然而它就在那里,作为regex.alf.nu上的问题12|:匹配的平衡对和>.除非集合中有其他模式,否则我不会得到。那么……这可能吗?如果是,怎么办?注意事项:我知道这对于真正的正则表达式来说是不可能的,但基于挑战,它似乎在Javascript的风格中是可能的(它至少不规则到足以有反向引用)。我只是不知道有什么功能可以让他们这样做。没有其他代码-该表单允许输入单个正则表达式,该正则表达式根据页面上的测试字符串进行评估。我想我可以尝试破解页面以打破正则表达式并进入原

javascript - 用于匹配用户名的正则表达式 : min 3 chars, 最多 20 个字符,字符之间可选下划线

我正在尝试匹配roblox用户名(遵循这些准则):最少3个字符最多20个字符最多1个下划线下划线不能在用户名的开头或结尾我在node.js版本10.12.0上运行。我当前的RegExp是:/^([a-z0-9])(\w)+([a-z0-9])$/i,但这不考虑1个下划线的限制。 最佳答案 你可以使用^(?=^[^_]+_?[^_]+$)\w{3,20}$参见ademoonregex101.com(有用于演示目的的换行符)分解为^#startofthestring(?=^#startofthestring[^_]+#notanunde

php - 最大长度 XSLT 但在输出中保留完整段落

我已经使用symphony工作了几个星期并掌握了它的窍门,非常喜欢它的所有基本功能。我有一个问题,因为我不太确定如何解决这个问题:我有一个关于我正在从事的项目的新闻/博客页面。有时文章很短有时很长。我想做的是显示一定数量的段落,但在找到x数量的字符时停止。我找到了计算字符串长度的方法,但我希望它像这样工作。paragraphwith20charsparagraphwith300charsparagraphwith500chars等等现在我想配置最多200个字符。第二段将超过数量,但我希望第一段和第二段都显示内容。所以它实际上是320个字符(不包括html和空格)。我希望我不会含糊不清,

C++ Windows 十进制到 UTF-8 字符转换

我一直在使用下面的函数将unicode字符的十进制表示形式转换为C++中的UTF8字符本身。我目前拥有的功能在Linux/Unix系统上运行良好,但它在Windows上不断返回错误字符。voidGetUnicodeChar(unsignedintcode,charchars[5]){if(code>6);chars[0]=0xC0|(code&0x1F);chars[2]='\0';}elseif(code>6);chars[1]=0x80|(code&0x3F);code=(code>>6);chars[0]=0xE0|(code&0xF);chars[3]='\0';}elseif

java - 如何根据使用的字体将代码点映射到 unicode 字符?

客户端打印标签并一直使用一组符号(?)字体来完成此操作。该应用程序使用单字节数据库(带有Latin-1的Oracle)。我要替换的旧应用程序不支持Unicode。它不知何故没问题。我正在编写的替换应用程序应该处理旧数据。从charmap应用程序中选取的符号通常会映射到特定的Unicode字符,但有时它们不会。例如,使用LAB3字体看起来像Moon的实际上是U+2014(EMDASH)。当用户将此字符粘贴到Swing文本字段中时,该字符的代码点为8212。数据库,Oracle认为它不能被安全地编码,并用可怕的¿替换它。因此,我开始将字符移动8000:保存时-=8000,显示字段时+=80