Другое решение:
import random
word = 'administrator'
result = [[x, '_'] for x in word]
for i in result:
res = random.choice([x for x in result if x[1] == '_'])
index = result.index(res)
result[index][1] = result[index][0]
print(''.join([x[1] for x in result]))
Вывод:
____n________
____n___r____
____n_s_r____
____n_s_r__o_
____n_s_r__or
___in_s_r__or
a__in_s_r__or
a__in_str__or
ad_in_str__or
ad_in_stra_or
ad_inistra_or
ad_inistrator
administrator
Я сделал бы это. Вы связываете свою функцию "видимости" со свойством видимости управления asp:literal:
<asp:Repeater id="myRepeater" runat="server">
<ItemTemplate>
<asp:literal runat='server' id='mycontrol'
visible='<%# DataBinder.Eval(Container.DataItem, "MyProperty").Equals("SomeValue") %>'>
<%# DataBinder.Eval(Container.DataItem, "MyProperty") %>
</asp:literal>
</ItemTemplate>
</asp:Repeater>
Вы могли осуществить рефакторинг его к серверному сценарию.
<script runat="server">
protected string ShowIfEqual(RepeaterItem Item, string SomeValue) {
YourTypeThatIsDataBound _item = (YourTypeThatIsDataBound)Item.DataItem;
return _item.MyProperty == SomeValue ? _item.MyProperty : string.Empty;
}
</script>
И вызов это встраивает как...
<%#ShowIfEqual(Container, "SomeValue")%>