我想使用 C# 在单词的每个字母之间插入一个软连字符。例如这里是一些文本:
Thisisatest => T-h-i-s-i-s-a-t-e-s-t
'-' 是软连字符。我怎么能在 C# 中做到这一点?我打算在网站上使用它。
注意:我使用的是 .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(但 .NET 4.0 中的object[]
重载需要String.Join
):
var test = "Thisisatest";
String.Join("­", test.ToCharArray());
对于以前版本的可怜的灵魂:
String.Join("­", test.Select(x => x.ToString()));
如果您碰巧使用 .NET 2.0(正如 OP 现在所说),那么请查看另一个响应,因为它不需要再次输入。
试试这个
.net 3.5
Console.WriteLine( String.Join("­","Thisisatest".ToCharArray().Select(r=>r.ToString()).ToArray()));
.net 4.0+
Console.WriteLine(String.Join("­", "Thisisatest".ToCharArray()));
下面是一个简单的辅助方法,您可以使用它在给定字符串的每个字母之间添加连字符。
static string Hyphenify(string text)
{
return string.Join("-", text.ToArray());
}
您还可以添加另一个参数以使您能够使用分隔符,见下文。
static string SpaceLetters(string text, string separator)
{
return string.Join(separator, text.ToArray());
}
这是解决方案: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 AddHyphens(string s)
{
string ret="";
foreach(char c in s.ToCharArray())
ret += ret != "" ? "-" + c : c.ToString();
return ret;
}
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);
}