问题
Is there a way to add a space after commas in a string only if it doesn't exist.
Example:
word word,word,word,
Would end up as
word word, word, word,
Is there a function in ruby or rails to do this?
This will be used on hundreds of thousands of sentences, so it needs to be fast (performance would matter).
回答1:
Using negative lookahead to check no space after comma, then replace with comma and space.
print 'word word,word,word,'.gsub(/,(?![ ])/, ', ')
回答2:
Just use a regular expression to replace all instances of ","
not followed by a space with ", "
.
str = "word word,word,word,"
str = str.gsub(/,([^ ])/, ', \1') # "word word, word, word,"
回答3:
If the string contains no multiple adjacent spaces (or should not contain such), you don't need a regex:
"word word, word, word,".gsub(',', ', ').squeeze(' ')
#=> "word word, word, word, "
回答4:
Add missing space:
"word word,word,word,".gsub(/,(?=\w)/, ', ') # "word word, word, word,"
and removing the last unnecessary comma if necessary
"word word,word,word,".gsub(/,(?=\w)/, ', ').sub(/,\Z/, '') # "word word, word, word"
来源:https://stackoverflow.com/questions/22947779/add-space-after-commas-only-if-it-doesnt-already