在C#中使用软连字符

时间:2012-05-02 07:26:18

标签: c# asp.net .net-2.0

我想使用C#在单词中的每个字母之间插入一个软连字符。例如,这里有一些文字:

Thisisatest => T-h-i-s-i-s-a-t-e-s-t

' - '是一个柔和的连字符。我怎么能在C#中做到这一点?我打算在网站上使用它。

注意:我使用的是.NET 2.0。

8 个答案:

答案 0 :(得分:7)

使用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("&shy;", chars);

或使用StringBuilder

StringBuilder builder = new StringBuilder(theString.Length * 6);
foreach (char c in theString) {
  builder.Append(c).Append("&shy;");
}
theString = builder.ToString(0, builder.Length - 5);

答案 1 :(得分:2)

不需要LINQ(但object[]中的String.Join重载需要.NET 4.0):

var test = "Thisisatest";
String.Join("&shy;", test.ToCharArray());

对于先前版本的贫困灵魂:

String.Join("&shy;", test.Select(x => x.ToString()));

如果您碰巧使用.NET 2.0(正如OP现在所述),那么请查看另一个回复,因为它不需要再次输入。

答案 2 :(得分:0)

试试这个

.net 3.5

Console.WriteLine( String.Join("&shy;","Thisisatest".ToCharArray().Select(r=>r.ToString()).ToArray()));

.net 4.0 +

Console.WriteLine(String.Join("&shy;", "Thisisatest".ToCharArray()));

答案 3 :(得分:0)

下面是一个简单的帮助方法,您可以使用它在给定字符串的每个字母之间添加连字符。

    static string Hyphenify(string text)
    {
        return string.Join("-", text.ToArray());
    } 

您还可以添加另一个参数以使您能够使用分隔符,请参阅下文。

    static string SpaceLetters(string text, string separator)
    {
        return string.Join(separator, text.ToArray());
    } 

答案 4 :(得分:0)

这是解决方案: 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;
}

答案 5 :(得分:0)

这是你想要的吗?

var r = new Regex( @"([A-Za-z0-9])(?!$|\s)" );
var text = "Thisisatest";
var text2=r.Replace( text,"$1-" );

答案 6 :(得分:0)

另一个版本:

    string AddHyphens(string s)
    {
        string ret="";
        foreach(char c in s.ToCharArray())
            ret += ret != "" ? "-" + c : c.ToString();
        return ret;
    }

答案 7 :(得分:0)

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); 
}