我有一个字符串:
<div class="capbg1">
<label>
<input type="text" class="form-control2 pull-right" value="<?php echo $capcode2;?>" name="captcha" disabled>
</label>
</div>
是否可以在句点和空格之间拆分字符串,但仅将句点保留在数组中?
string = "Yellow.car Red.Bag Blue.eyes"
最好使用['Yellow','.','Car','Red','.','Bag','Blue','.','Eyes']
的正则表达式。
答案 0 :(得分:0)
肯定有比这更有效的方法,但无论如何:
str = "Yellow.car Red.Bag Blue.eyes"
str.split(" ").map { |s| s.split(/([.])/) }.flatten.map(&:capitalize)
# => ["Yellow", ".", "Car", "Red", ".", "Bag", "Blue", ".", "Eyes"]
答案 1 :(得分:0)
有很多方法可以做到。
例如:
str = "Yellow.car Red.Bag Blue.eyes"
str.gsub('.', ' . ').split(' ').map(&:capitalize)
#=> ["Yellow", ".", "Car", "Red", ".", "Bag", "Blue", ".", "Eyes"]
首先替换“。”至 ' 。 '。
然后切片字符串。
最后写首字母大写。
答案 2 :(得分:0)
在这里,使用String#scan比String#split更方便。
str = "Yellow.car Red.Bag Blue.eyes"
str.scan(/\p{Alpha}+|\./).map(&:capitalize)
#=> ["Yellow", ".", "Car", "Red", ".", "Bag", "Blue", ".", "Eyes"]
正则表达式为“匹配一个或多个(大写或小写)字母或一个句点”。可以用[[:alpha:]]
代替\p{Alpha}
。两种文档(Unicode字母)位于Regexp。
答案 3 :(得分:0)
.split(/(\.)|\s+/)
在String#split中使用捕获组时,匹配项将与拆分项一起返回。
我们将同时匹配句点(\.
)和空格(\s+
)。由于捕获组((\.)
),阵列中仅包含句点。空格仍然会造成分裂,但空格本身将不会保留。