比如我有一个字符串string str = "あいさつ55挨拶abcd";我想要把字符串中的日文挑出来进行处理(这部分已实现),数字和字母不处理,处理后 我还要拼回原来的字符串,也就是结果应该是:"アイサツ55アイサツabcd",数字和字母的位置不变。字符串是否有字母或者数字以及字母和数字的位置都不确定,我想问的就是用什么方法把日文提出来,又如何放回去呢。各位有什么好的方法,请赐教。
调试欢乐多
正则的话直接replace
void Main()
{
string str = "あいさつ55挨拶abcd";
str=Regex.Replace(str,@"[^\da-zA-Z]",delegate (Match m)
{
switch(m.Value)
{
case "あ":
return "ア";
break;
case "い":
return "イ";
break;
case "さ":
return "サ";
break;
//其他以此类推 我想你懂的 我就不一一列出了
default:
return "";
break;
}
});
Console.WriteLine(str);
}
你转换过程不说,,谁又知道 你转换后的字符是如何排列的,有什么规律,如何重组?replace 是最好的方法 直接替换 不用考虑重组问题你不用。。晕
如果是正则的话string ss = "";//原文字
Regex r = new Regex(@"匹配日文的正则");
MatchCollection mc = r.Matches(ss);
foreach (Match m in mc)
{
string s = m.Groups[0].Value.ToString();//匹配的字符串
string news="";//对s进行文字处理
ss.Replace(s,news);//替换
}
我是用正则提出来的。 Regex.Replace(Kanji, @"[\u0800-\u9fa5]", "-").TrimEnd()这个可以把汉字或者假名的地方用"-"替换掉,问题是不知道怎么组合回来。
private void button1_Click(object sender, EventArgs e)
{
string str = "あいさつ55挨拶abcd";
string temp1 = Transfer(str); string str2 = "5あい5さつ55挨拶ab挨拶cd";
string temp2 = Transfer(str2);
} public string Transfer(string str)
{
string stReturn = string.Empty;
string stTemp = string.Empty;
Regex reg = new Regex("[\\d]|[a-zA-Z]");
for (int i = 0; i < str.Length; i++)
{
if (reg.IsMatch(str[i].ToString()))
{
if (stTemp != "")
{
stReturn += GetPianJia(stTemp);
}
stReturn += str[i].ToString();
stTemp = string.Empty;
}
else
{
stTemp += str[i];
}
}
return stReturn;
} public string GetPianJia(string str)
{
return "你的偏甲名";
}