2016-07-13 7 views
0

文字列から一重引用符を削除したいが、引用符はアポストロフィではない。文字列から一重引用符を削除するにはどうすればいいですか?

は例えば、私はこれを変換したい:それはすべての単一引用符を置き換えるよう

"I'm a very 'dumb' stackoverflow user." 
#=> I'm a very dumb stackoverflow user. 

だからstring.gsub("'", "") のようなものは動作しません。 "I'm'を交換すべきではない」

+0

はどのように非常にダムuser'「私は」 '扱うのでしょうか? –

+0

あなたは最初の文字列が "私は非常に '愚かな' stackoverflowユーザーだということですか? – CheeseFry

+0

いいえ、最初の文字列は私が投稿したものです...私はStackOverflowをチェックし、誰もが先頭/末尾の二重スペースを切り捨てたいので、この新しい質問です。 –

答えて

6

あなたは一意に単一引用符を表しかを決定する必要がありますたとえば、それができる:。。

  • 先行引用符スペース
  • 続い引用その場合、スペース

によっては、使用することができます:

s = "I'm a very 'dumb' stackoverflow user." 
s.gsub(/('|')/, ' ') 
# => "I'm a very dumb stackoverflow user." 

ただし、この条件が正しいことを確認する必要があります。そうでない場合は、作業可能な別の条件を分離(および強制)する必要があります。

+0

ありがとう、私はs.gsub(/( '|' | '' '' $)/ '')は引用符が文頭にあるときにも動作すると思いますか? –

+0

あなたが達成したいことに応じて、 '$'と '^'の代わりに '\ A'と' \ z'を使いたいかもしれません。 –

+0

"Chris 'car" .gsub(/(' | ')/、' ')#=> "Chris car" –

1

あなたはおそらく引用符を削除し、そのままアポストロフィを残したいので、私は適切なUTF-8アポストロフィとなるだろう:私たちがここで使用することは肯定後読みと先読みの両方がある

"I'm a very 'dumb' stackoverflow user.".gsub(/(?<=\p{L})'(?=\p{L})/, '’') 
             .delete("'") 
#⇒ "I’m a very dumb stackoverflow user." 

:単一引用符、持ちます文字の両側にあるという文字は、アポストロフィであると見なされます。

他の答えは(あなたはASCIIを使用していると仮定)あなたはアポストロフィを交換することにしたくない場合は"He said 'yes', though technically (say, 'literally') he did not want to."

+1

UTF-8に切り替えると、テキストがUTF-8が似ていないものにレンダリングまたは格納されている場合、ダウンストリームで問題が発生する可能性があります。 –

+0

2016年にまだutf-8で不具合が発生している人がいれば、その問題はより深く、一重引用符で囲まれます。 – mudasobwa

+0

それはそうかもしれませんが、レガシーシステムでは時にはそれについて言わない場合もあります。 –

1

に引用符の半分を残して、あなたは、単に何か非文字を持つ引用符を削除することができますそれらの横にある。

"I'm a very 'dumb' stackoverflow user.".gsub(/((?<!\w)'|'(?!\w))/, '') 

引用符がアポストロフィであることを確実に言うことはできません。それらを検出するための正確なルールはありません。彼らは "私はジェームズのバッグを取った!"のような言葉の最後に存在することができます。しかし、提供された正規表現は、ほとんどの場合それらを検出することができます。

+0

"種のステータス"はどうなりますか? –

+0

編集したものを教えてもらう必要はありません。私たちは、必要なときにいつ、何が変更されたかを伝えることができます。また、「編集」タグや「更新」タグを使用して変更をマークしないでください。最初にあったかのように、変更された情報をテキストに入れます。ここでも、私たちが気にするならば、何が変わったのかが分かります。 –

0

あなたは「単語」を囲むアポストロフィにそれを制限する場合があります

"It's my 'dumb' species' status".gsub(/'([\S]+)'/, '\1') 
=> "It's my dumb species' status" 
関連する問題