草庐IT

c# - .Net/C# 说明

coder 2023-09-12 原文

我已经获得了将其转换为 Swift 的一部分代码,但我不太确定该代码是在 .net 还是 c# 或 java 中。

这是代码

public static int calculate(string number) {

    string text = number.ToString();

    for (int i = 0; i < text.Length; i++) {
        int num = Convert.ToInt32((int)(text[text.Length - i - 1] - '0'));
    }

}

我试过的是这个,但我没有得到预期的结果。

func calculate(_ number: String) -> Int {

     let text = number

     for i in 0..<text.count {

         let num = Int(text.substring(text.count - i - 1).trimmingCharacters(in: CharacterSet(charactersIn: "0"))) ?? 0
     }
}

我不介意告诉我它会怎样,我只是想了解这行代码的作用,以便我可以将其转换为 swift

Int(text.substring(text.count - i - 1).trimmingCharacters(in: CharacterSet(charactersIn: "0"))) ?? 0

还有他为什么这样做:string text = number.ToString();

既然函数有一个字符串参数,那么在它旁边加上toString不就一样了吗? (也许是为了代码更清晰?)

提前致谢

最佳答案

我不懂Swift,但是我可以解释一下C#代码...很绕,可以大大减少...

让我们从第一行开始:

string text = number.ToString();

这会将数字转换为字符串,假设数字是 123450,它会将其转换为 "123450"。在您的示例中不需要它,因为 number 已经作为 string 传入,因此可以保留 .ToString()完全关闭而不影响任何东西。

现在 for 循环:

for (int i = 0; i < text.Length; i++) {
    int num = Convert.ToInt32((int)(text[text.Length - i - 1] - '0'));
}

它会遍历字符串中的每个字符,可以通过更好地使用 for 循环参数来简化循环:

for (int i = text.Length - 1; i >= 0; i--) {
    int num = Convert.ToInt32((int)(text[i] - '0'));
}

本来会更容易阅读,但我们将继续使用原始代码...

忽略这在上面的上下文中确实无效,让我们假设您在循环内用 num 做了一些事情以使其有值(value)。

让我们分解一下:

text[text.Length - i - 1] - '0'

正在做一些“ASCII 数学”来得出一个数字。 ASCII 数字从十进制数 48 开始,因此 '0' 等同于值 48。所以对于第一次迭代:

text[text.Length (6) - i (0) - 1 = 5] = '0' - '0' = 0

Convert.ToInt32 在这里是多余的,因为 '0' - '0' 的结果是 0 的整数值。前面的 cast (int) 也是多余的,所以这一行可以简化为:

int num = text[text.Length - i - 1] - '0';

所以这更有意义。你可以用另一种方式写:

int num = Convert.ToInt32(text[text.Length - i - 1]) - 48;

所以它基本上是将字符 '0' 变回数字 0 等等所有数字 0 到 9。这段代码会中断(给出不准确的结果)如果 number 是一个浮点值。


我知道这里的练习是将其转换为另一种语言,但在 C# 中,整个 for 循环可以简化为:

public static int calculate(string number)
{
    var reverseNums = number.ToCharArray().Reverse().Select(c => c - '0').ToList();

    //Do whatever on the reverseNums    
}

关于c# - .Net/C# 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610577/

有关c# - .Net/C# 说明的更多相关文章

  1. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  2. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  3. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  4. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  5. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  6. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  7. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  8. spring.profiles.active和spring.profiles.include的使用及区别说明 - 2

    转自:spring.profiles.active和spring.profiles.include的使用及区别说明下文笔者讲述spring.profiles.active和spring.profiles.include的区别简介说明,如下所示我们都知道,在日常开发中,开发|测试|生产环境都拥有不同的配置信息如:jdbc地址、ip、端口等此时为了避免每次都修改全部信息,我们则可以采用以上的属性处理此类异常spring.profiles.active属性例:配置文件,可使用以下方式定义application-${profile}.properties开发环境配置文件:application-dev

  9. .net - .NET 将如何影响 Python 和 Ruby 应用程序? - 2

    我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth

  10. ruby - 如何使用 Ruby HTTP::Net 处理 404 错误? - 2

    我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。

随机推荐