所以基本上我们需要一个正则表达式来从字符串中去除多余的标点符号,只留下一个标点字符。
所以:
This is my awesome string!!!!! Don't you love it???!!??!!
会导致
This is my awesome string! Don't you love it?!
我已经试了又试了又想得到这个,但我要么最终破坏了字符串,要么它根本不起作用。我仍在学习正则表达式,所以请原谅我提出的一个愚蠢的问题。
我想“标点符号”几乎可以是任何不是 A-Za-z0-9 的东西
编辑 看来我误解了我们最初的要求。使用下面接受的解决方案,我将如何调整它,以便无论您有什么字符,标点符号都仅限于第一个?
浏览器
???!!!!!!
会变成只是
?
和
This is my string!!!?!?!?!? Isn't it great???!?!?!!
会变成
This is my string! Isn't it great?
最佳答案
与其他答案类似,但应按任何顺序处理所有非 0-9a-zA-Z 字符,让您每个都剩下一个:
$newstring= preg_replace('/([^\w\s])(?=[^\w\s]*\1)/', '', $oldstring);
应该转
This is my awesome string!!!!! Don't you love it???!!??!!
进入
This is my awesome string! Don't you love it?!
它的工作原理是使用积极的前瞻来查看该字符是否再次出现在此标点符号字符串中。如果是,它将替换为空字符串。
关于PHP Regex去除多余的标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218650/
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac
啊,正则表达式有点困惑。我正在尝试删除字符串末尾所有可能的标点符号:ifstr[str.length-1]=='?'||str[str.length-1]=='.'||str[str.length-1]=='!'orstr[str.length-1]==','||str[str.length-1]==';'str.chomp!end我相信有更好的方法来做到这一点。有什么指点吗? 最佳答案 str.sub!(/[?.!,;]?$/,'')[?.!,;]-字符类。匹配这5个字符中的任何一个(注意,。在字符类中并不特殊)?-前一个字符或组
我正在尝试创建一个带有项目符号字符的Ruby1.9.3字符串。str="•"+"helloworld"但是,当我输入它时,我收到有关非ASCII字符的语法错误。我该怎么做? 最佳答案 你可以把Unicode字符放在那里。str="\u2022"+"helloworld" 关于ruby-如何在Ruby字符串中插入项目符号字符?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1195
我想将“US”之类的国家代码转换为表情符号标志,即将“US”字符串转换为Ruby中适当的Unicode。Here'sanequivalentexampleforJava 最佳答案 使用tr将字母字符转换为其区域指示符号:'US'.tr('A-Z',"\u{1F1E6}-\u{1F1FF}")#=>"??"当然你也可以直接使用Unicode字符:'US'.tr('A-Z','?-?')#=>"??" 关于ruby-从Ruby中的国家代码获取表情符号标志,我们在StackOverflow上找
假设您有一个可执行文件foo.rb,其库bar.rb的布局如下:/bin/foo.rb/lib/bar.rb在foo.rb的header中放置以下要求以在bar.rb中引入功能:requireFile.dirname(__FILE__)+"../lib/bar.rb"只要对foo.rb的所有调用都是直接的,这就可以正常工作。如果你把$HOME/project和符号链接(symboliclink)foo.rb放入$HOME/usr/bin,然后__FILE__解析为$HOME/usr/bin/foo.rb,因此无法找到bar.rb关于foo.rb的目录名.我意识到像rubygems这
我有:sprintf("%02X"%13)哪些输出:=>"OD"我希望我的输出是:=>"%0D"我试过:sprintf("\%%02X"%13)但我得到一个错误警告:格式字符串的参数过多。这同样适用于:sprintf("%%02X"%13)是否可以单独在sprintf中添加前导%? 最佳答案 文字%必须转义为%%:sprintf('%%')#=>"%"此外,您应该使用sprintf或%,而不是两者:sprintf('%%%02X',13)#=>"%0D"#^#commahere'%%%02X'%13#=>"%0D"#^#percen
我需要在数据库更新前后比较一些Rails(2.3.11)模型属性值,因此我首先查找我的记录并将现有属性值保存在哈希中,如下所示:id=params[:id]work_effort=WorkEffort.find(id)ancestor_rollup_fields={:scheduled_completion_date=>work_effort.scheduled_completion_date}work_effort.update_attributes(params.except(:controller,:action))#etcetera请注意,我坚持使用符号作为哈希键的“最佳实践”
由于符号不响应sort使用的方法,有没有人有对符号数组进行排序的技术?有兴趣看到一些其他的想法。 最佳答案 嗯,symbols.sort_by{|sym|sym.to_s}有效。也在1.9符号中做响应,所以你可以做symbols.sort. 关于ruby-on-rails-ruby:对符号数组进行排序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4129887/
我有一份报告,其中列出了总值,然后在括号中列出了变化。例如:歌曲:45首(比上周增加10首)所以我想将整数10打印为“+10”,将-10打印为“-10”我现在正在做(song_change>=0?'+':'')+song_change.to_s有没有更好的办法? 最佳答案 "%+d"%song_changeString#%根据字符串中的打印说明符格式化右侧。打印说明符“%d”也表示十进制。整数,添加到打印说明符的“+”强制始终打印适当的符号。您可以在Kernel#sprintf中找到有关打印说明符的更多信息,或在manpagefor