我们的Designer.cs文件中有this.label1.Text = "Code Smart";
现在我正在阅读我的解决方案文件夹中保存的所有.Designer.cs
个文件。
现在我想要符合这些条件:
.Text=
或.Text =
内匹配与否。"" (Double Quotes)
中的字符串中获取文字,这意味着:Code Smart
背后的想法是收集文件中的所有.Text
数据,因此,如果我得到匹配的数据和该文本的值,那么我会将其导出到CSV
进行翻译。
有人可以帮我这样做吗? PLS
ADD1
我在ADD1中做了一些更改并修改为ADD2,请检查并发表评论。感谢
ADD2:
好的,最后我达成了这个让我知道如何在双引号中输入字符串:
FolderBrowserDialog fbd = new FolderBrowserDialog();
foreach (string file in Directory.EnumerateFiles(fbd.SelectedPath, "*.Designer.cs"))
{
int counter = 0;
string line;
// Read the file and display it line by line.
StreamReader CurrentFile = new StreamReader(file);
while ((line = CurrentFile.ReadLine()) != null)
{
bool typeOne = line.Contains(".Text=");
bool typeTwo = line.Contains(".Text =");
if ((typeOne == true) || (typeTwo == true))
{
// Get the data which is enclosed in double quotes
}
counter++;
}
CurrentFile.Close();
}
答案 0 :(得分:1)
然后我会将其导出为CSV格式进行翻译。
如果目标是拥有多语言GUI,我建议不要这样做。 尝试使用Zeta Resource Editor或Resx Resource Translator。
同时检查此资源:Walkthrough: Localizing Windows Forms。 它描述了如何创建可以使用Zeta或Resx编辑的多个语言资源文件。
希望这是你试图实现的目标。如果没有,请回答这个问题。
答案 1 :(得分:1)
答案 2 :(得分:1)
看看这是否有帮助;
foreach (string file in Directory.EnumerateFiles(fbd.SelectedPath, "*.Designer.cs"))
{
int counter = 0;
string line;
Regex r = new Regex(@"this.label1.Text[ ]*[\=]{1}[ ]*[\""]{1}(?<StringValue>[a-zA-Z0-9 ]*)[\""]{1}[ ]*[\;]{1}");
// Read the file and display it line by line.
StreamReader CurrentFile = new StreamReader(file);
while ((line = CurrentFile.ReadLine()) != null)
{
bool typeOne = line.Contains(".Text=");
bool typeTwo = line.Contains(".Text =");
if ((typeOne == true) || (typeTwo == true))
{
Match m=r.Match(line);
string thevalueyouneed=m.Groups[1].Value;//This is what you need.
//Do other things with this value.
}
counter++;
}
CurrentFile.Close();
}
第一组是您需要的字符串。
答案 3 :(得分:0)
if ((typeOne == true) || (typeTwo == true))
{
int indexOfTheStartOfText = line.IndexOf(".Text", StringComparison.CurrentCulture);
if (indexOfTheStartOfText != -1)
{
int textLength = (typeOne == true) ? ".Text=".Length : ".Text =".Length;
int StartIndexOfActualText = indexOfTheStartOfText + textLength + "\"".Length;
int EndIndexOfActualText = line.IndexOf('"', StartIndexOfActualText);
string myText = line.Substring(StartIndexOfActualText, EndIndexOfActualText - StartIndexOfActualText);
}
}
StartIndexOfActualText
或typeOne
需要更改typeTwo
的计算