我想确定一个字符串是否是回文。
假设我有这样的文件:
abcccba
abcccccccccccccccccccccccba
alfabetaalfa
我想检查这个文件的每一行,并在每次行回文时说“PALINDROME”。问题是我不能使用匹配([0-9])([0-9])/ 2/1,因为我不知道这个词会有多长。我认为我应该以某种方式模式缓冲。
搜索stackoverflow找到一些提示,我发现了这个:
sed -r #app/views/ajaxxxes/create.js.erb
<% if @ajaxxx.title %>
console.log("Ajaxxx created!");
$("#data-list").html("<%=j render 'data', locals: {ajaxxxes: @ajaxxxes} %>");
<% else %>
console.log("Failed");
<% end %>
#app/controllers/ajaxxxes_controller.rb
class AjaxxxesController < ApplicationController
def create
@ajaxxxes = Ajaxxx.all
...
end
end
#app/views/ajaxxxes/_data.html.erb
<tbody>
<% ajaxxxes.each do |ajaxxx| %>
<tr>
<td><%= ajaxxx.title %></td>
<td><%= ajaxxx.description %></td>
<td><%= link_to 'Show', ajaxxx %></td>
<td><%= link_to 'Edit', edit_ajaxxx_path(ajaxxx) %></td>
<td><%= link_to 'Destroy', ajaxxx, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
问题是它没有完全正常工作,我不知道如何使用它来打印像“PALINDROME”或“不是PALINDROME”这样的特定单词。
非常感谢您的帮助。
编辑:当然,“不使用循环”是指常见的循环。跳转到标签是可以的。答案 0 :(得分:2)
您不必使用sed:
xxx="rrrtttrrr"
if [ $xxx == `echo $xxx| rev` ]; then
echo "PALINDROME"
else
echo "NOT A PALINDROME"
fi
可以找到Sed版本here:
#! /bin/sed -f
# Laurent Le Brun <laurent [at] le-brun.eu> - 2007
:loop
s/^\(.\)\(.*\)\1$/\2/
t loop
/...*/ {
i\
no
b end
}
i\
yes
:end
d