将文本框输入到数组

时间:2017-08-25 17:55:36

标签: c# arrays

我想为我的字符串输入创建一个文本框,如果输入有"。"则将其分成数组。例如:

  

答案在于机器翻译。最好的机器翻译技术无法始终为网站或人类用户提供量身定制的翻译。只需将代码段复制并粘贴到任何位置即可。

在这种情况下,该输入将包含3个数组。

请查看Microsoft的以下代码。我想使用文本框更改输入中的硬编码。然后传递每个要翻译的数组。

class TranslateArraySample
{
    public static async Task Run(string authToken)
    {
        var from = "en";
        var to = "es";
       ** var translateArraySourceTexts = new []
        {
            "The answer lies in machine translation.",
            "the best machine translation technology cannot always provide translations tailored to a site or users like a human ",
            "Simply copy and paste a code snippet anywhere "
        };
        var uri = "https://api.microsofttranslator.com/v2/Http.svc/TranslateArray";
        var body = "<TranslateArrayRequest>" +
                       "<AppId />" +
                       "<From>{0}</From>" +
                       "<Options>" +
                       " <Category xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                           "<ContentType xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\">{1}</ContentType>" +
                           "<ReservedFlags xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                           "<State xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                           "<Uri xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                           "<User xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "</Options>" +
                       "<Texts>" +
                           "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">{2}</string>" +
                           "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">{3}</string>" +
                           "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">{4}</string>" +
                       "</Texts>" +
                       "<To>{5}</To>" +
                   "</TranslateArrayRequest>";
        string requestBody = string.Format(body, from, "text/plain", translateArraySourceTexts[0], translateArraySourceTexts[1], translateArraySourceTexts[2], to);

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage())
        {
            request.Method = HttpMethod.Post;
            request.RequestUri = new Uri(uri);
            request.Content = new StringContent(requestBody, Encoding.UTF8, "text/xml");
            request.Headers.Add("Authorization", authToken);
            var response = await client.SendAsync(request);
            var responseBody = await response.Content.ReadAsStringAsync();
            switch (response.StatusCode)
            {
                case HttpStatusCode.OK:
                    Console.WriteLine("Request status is OK. Result of translate array method is:");
                    var doc = XDocument.Parse(responseBody);
                    var ns = XNamespace.Get("http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2");
                    var sourceTextCounter = 0;
                    foreach (XElement xe in doc.Descendants(ns + "TranslateArrayResponse"))
                    {
                        foreach (var node in xe.Elements(ns + "TranslatedText"))
                        {
                        **    Console.WriteLine("\n\nSource text: {0}\nTranslated Text: {1}", translateArraySourceTexts[sourceTextCounter], node.Value);
                        }
                        sourceTextCounter++;
                    }
                    break;
                default:
                    Console.WriteLine("Request status code is: {0}.", response.StatusCode);
                    Console.WriteLine("Request error message: {0}.", responseBody);
                    break;
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

使用(StringObject).Split("<separator>") 示例代码:

var translateArraySourceTexts = new[]
            {
                "The answer lies in machine translation.",
                "the best machine translation technology cannot always provide translations tailored to a site or users like a human ",
                "Simply copy and paste a code snippet anywhere "
            };
    var array = string.Join(",",translateArraySourceTexts).Split('.');

答案 1 :(得分:0)

以下是一些示例代码。用文本框中的.Text替换字符串s。

string s = @"Changing your development practice to introduce an automated testing strategy can revolutionise your deployments. If you approach the software release date with a sense of dread, this technique is for you.

Implementing a test-driven development strategy using tSQLt leads to robust, modular code that becomes a pleasure to work with. As more tests are created, trust builds that releases will provide beneficial new functionality with no negative side-effects.";

var translateArraySourceTexts = s.Split( Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries ).ToArray();

答案 2 :(得分:0)

您需要String.Split(charArray,stringSplitoptions)才能在结果数组中只获得三个字符串。

在你的例子中

   string translatableString = "The answer lies in machine translation. The best 
    machine translation technology cannot always provide translations tailored to 
    a site or users like a human. Simply copy and paste a code snippet anywhere.";

    string[] arr = translatableString.Split(new char[] { '.' }, 
    StringSplitOptions.RemoveEmptyEntries);

你会得到一个包含4个字符串的数组 translatableString.Split(&#39;。&#39;)因为一个是空的。这就是我提供重载方法的原因。