我试图用这个程序中的ascii文本替换普通文本:
所以a将被替换为&等等。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TextConverter
{
public partial class TextCoverter : Form
{
public TextCoverter()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string[] normal = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
string[] ascii = { "â", "ß", "ç", "ð", "è", "ƒ", "ģ", "н", "ι", "j", "ќ", "ļ", "м", "и", "ю", "ρ", "Ω", "ѓ", "$", "τ", "ט", "Λ", "ш", "χ", "У", "ź" };
for (int i = 0; i < 26; i++)
{
textBox2.Text = textBox1.Text.Replace(normal[i], ascii[i]);
}
}
}
}
但它不会取代Ascii。请帮忙。
答案 0 :(得分:3)
由于您将结果写入与原始变量不同的变量,因此只会替换最后一个字母。您应该写入同一个框,或写入临时字符串,并将其写入最后的第二个框。
var tmp = textBox1.Text;
for (int i = 0; i < 26; i++)
{
tmp = tmp.Replace(normal[i], ascii[i]);
}
textBox2.Text = tmp;
一般来说,这不是最有效的替换算法,因为它在不可变的字符串上运行。你最好创建一个可变的字符串构建器,并一次写一个字符。
const string repl = "âßçðèƒģнιjќļмиюρΩѓ$τטΛшχУź";
var res = new StringBuilder();
foreach (char c in textBox1.Text) {
if (c >= 'a' && c <= 'z') {
res.Append(repl[c-'a']);
} else {
res.Append(c);
}
}
textBox2.Text = res.ToString();
答案 1 :(得分:0)
textBox2.Text = textBox1.Text.Replace(normal[i], ascii[i]);
你一次又一次地替换textBox1
,但不保存以前的状态,只能进行最后一次循环迭代