加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – F#中的Alt-Code字符

发布时间:2020-12-17 07:25:00 所属栏目:百科 来源:网络整理
导读:编辑/更新: 谢谢大家的回复.我知道我太模糊了,但不确定在这种情况下发布裸线代码是否有用. 在我的.vb文件中,我有一个下拉控件,其验证值为: TempUnit.DataSource = {"°C","°F","°R","K"} …存储在变量中: Dim unit As String = TempUnit.SelectedItem.T
编辑/更新:
谢谢大家的回复.我知道我太模糊了,但不确定在这种情况下发布裸线代码是否有用.

在我的.vb文件中,我有一个下拉控件,其验证值为:

TempUnit.DataSource = {"°C","°F","°R","K"}

…存储在变量中:

Dim unit As String = TempUnit.SelectedItem.ToString

…与其他变量一起传递给函数:

Function xxx(...,ByVal unitT As String) As Double

…最终调用.fs文件并使用以下方式进行评估:

let tempConv t u =
match u with
|"°C" -> t * 9.0 / 5.0 + 32.0
|"°R" -> t - 459.67
|"K" -> t * 9.0 / 5.0 - 459.67
|_ -> t

如果选择了开尔文以外的任何温度单位,则匹配失败并默认为其他情况(在此上下文中为华氏温度).我最终通过评估子字符串来绕过度数符号:

Dim unit As String = TempUnit.SelectedItem.ToString.Substring(1)

该程序再次运行,但我不知道我改变了什么,如果有的话,使字符串匹配停止工作.我尝试的第一件事是从一个文件复制/粘贴到另一个文件,以确保它们是相同的字符串,除了尝试其他符号,但无济于事.学位符号引起了我的注意,但随后我检查了压力单位并发现了与微前缀完全相同的问题.

谢谢你,Hans Passant,我想到了unicode作为一种可能的解决方案,但在当下的热度下它似乎并不是一个简单的解决方案.感谢您的链接.

原帖:
我有一个VB程序引用存储在F#库文件中的函数,其参数包括包含特殊字符的度量单位字符串(例如“°??C”“μBar”).

.vb和.fs文件中的字符串相同;直到F#库文件由于我不知道的原因而停止识别Alt-Code字符时才会出现问题.

如果我从F#和VB文件中的字符串定义中删除有问题的Alt-Code字符,程序将按预期工作.

什么会导致匹配在两个碰巧包含Alt-Code字符的相同字符串之间失败?

在F#(和VB)中处理Alt-Code字符的正确方法是什么?

解决方法

μ字形有点臭名昭着. Unicode有两个看起来像这样的代码点:U 03BC =“希腊小写字母Mu”和U 00B5 =“Micro sign”.一个是希腊字母表中的字母,另一个是经常出现在数学和单位中的符号.

比较μ和μ.在大多数字体中看起来几乎相同(你可以看到与Segoe UI的区别)并且非常容易欺骗人眼.排版人员坚持说他们不一样,特别是如果他们是我想象的希腊人.计算机也没有,你肯定会遇到的问题.

复制/粘贴或重新键入以进行修复. Windows中的Charmap.exe小程序非常方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读