C# を使用して、単語のすべての文字の間にソフト ハイフンを挿入したいと思います。たとえば、次のテキストがあります。
Thisisatest => T-h-i-s-i-s-a-t-e-s-t
「-」はソフトハイフンです。C#でこれを行うにはどうすればよいですか? Webサイトで使用する予定です。
注:私は .NET 2.0 を使用しています。
­
ソフト ハイフンには HTML エンティティを使用します。
theString = String.Join("­", theString.Select(c => c.ToString()));
.NET 2.0 の場合:
string[] chars = new string[theString.Length];
for (int i = 0; i < theString.Length; i++) {
chars[i] = theString[i].ToString();
}
theString = String.Join("­", chars);
またはを使用してStringBuilder
:
StringBuilder builder = new StringBuilder(theString.Length * 6);
foreach (char c in theString) {
builder.Append(c).Append("­");
}
theString = builder.ToString(0, builder.Length - 5);
LINQ は必要ありません (ただし、のobject[]
オーバーロードには.NET 4.0 が必要ですString.Join
):
var test = "Thisisatest";
String.Join("­", test.ToCharArray());
以前のバージョンの貧しい魂のために:
String.Join("­", test.Select(x => x.ToString()));
たまたま.NET 2.0を使用している場合(OPが現在述べているように)、再度入力する必要がないため、別の応答を参照してください。
別のバージョン:
string AddHyphens(string s)
{
string ret="";
foreach(char c in s.ToCharArray())
ret += ret != "" ? "-" + c : c.ToString();
return ret;
}
ここに解決策があります: ASPX ページ:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:TextBox ID="txtOriginalString" runat="server"></asp:TextBox>
<asp:TextBox ID="txtFormattedString" runat="server"></asp:TextBox>
<asp:Button ID="btnFormat" Text="Format" runat="server" OnClick="btnFormat_Click" />
</asp:Content>
C# コード:
protected void btnFormat_Click(object sender, EventArgs e)
{
string formattedString = "";
foreach (char c in this.txtOriginalString.Text.ToCharArray())
formattedString += c + "-";
this.txtFormattedString.Text = formattedString;
}
これはあなたが望んでいたものですか?
var r = new Regex( @"([A-Za-z0-9])(?!$|\s)" );
var text = "Thisisatest";
var text2=r.Replace( text,"$1-" );
string str = "sometext";
string output="";
if(str.Length>0)
{
output=""+str.ElementAt(0);
for(int i =1; i< str.Length;i++)
output += "-"+str.ElementAt(i);
}