微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

编辑/更新:
谢谢大家的回复.我知道我太模糊了,但不确定在这种情况下发布裸线代码是否有用.

在我的.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小程序非常方便.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐