关于String.Format混合$符号格式化引发的问题

之前一个老项目是用string.Format()进行格式化的,.net 4.5之后的版本 引入 $"字符串" 格式化标识符,

如下代码:

            string barcode = "1234567{#0.000}ABCDE";
            barcode = "12345START{0:#000}ABCDE";
            try
            {
                string sFormat = string.Format($"条码{barcode}");                
                Console.WriteLine(sFormat);
            }
            catch (Exception ex) 
            {
                Console.WriteLine($"格式化出错:{ex.Message}.源字符串{barcode}");
            }
            Console.ReadLine();

程序运行如图:

出错原因:

使用string.Format和 $格式化字符串语法可能出现异常,取决于输入的字符串参数实例,

比如字符串含有 # 和 {}等特殊字符 就有可能出现格式化错误。

看根据输入字符串实例进行处理,如下修复代码:

            string barcode = "1234567{#0.000}ABCDE";
            barcode = "12345START{0:#000}ABCDE";
            try
            {
                string sFormat = string.Format($"条码{barcode}", 36);                
                Console.WriteLine(sFormat);
            }
            catch (Exception ex) 
            {
                Console.WriteLine($"格式化出错:{ex.Message}.源字符串{barcode}");
            }
            Console.ReadLine();

运行如图【格式化成功】:

一劳永逸解决问题的方式:

格式化字符串时要么只使用string.Format,要么使用$格式化符。两者尽量不要混合一起使用。

如下代码示例【只使用$进行格式化字符串】:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FormatBugDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string barcode = "1234567{#0.000}ABCDE";
            barcode = "12345START{0:#000}ABCDE";
            try
            {
                string sFormat = $"条码{barcode}";                
                Console.WriteLine(sFormat);
            }
            catch (Exception ex) 
            {
                Console.WriteLine($"格式化出错:{ex.Message}.源字符串{barcode}");
            }
            Console.ReadLine();
        }
    }
}

示例运行如图: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全技术】电子邮件安全PGP,SMIME

一、PGP(Pretty Good Privacy) PGP是一种邮件加密手段,他在发邮件一方加密,然后发给发送方邮件服务器,发送方邮件服务器再发送给接收方邮件服务器,然后接收方再从接收方邮件服务器pop出来,这整…

vue实现自动打字效果(带光标效果)

代码介绍(其实就是通过字符串截取加定时拼接完成的,我相信有时间都能琢磨出来,来这里就是为了省事) 上vue页面代码: <template><div idApp><h2>{{text}}<span ref"fou" class"fousdis">{{_}}</span></h2></div>…

CentOS 7 部署frp穿透内网

本文将介绍如何在CentOS 7.9上部署frp&#xff0c;并通过示例展示如何配置和测试内网穿透。 文章目录 &#xff08;1&#xff09;引言&#xff08;2&#xff09;准备工作&#xff08;4&#xff09;frps服务器端配置&#xff08;5&#xff09;frpc客户端配置&#xff08;6&#…

工信部举行发布会 数字化产业推动元宇宙发展取得良好成效

据官方消息&#xff0c;工业和信息化部12日举行“发挥国家高新区作用 加快推进新型工业化”新闻发布会。 在数字化建设方面取得了良好的成绩&#xff1a; 一是数字经济加速发展。国家高新区着力推动人工智能、大数据、云计算、区块链和元宇宙等新产业新业态蓬勃发展&#xff…

1688订单详情接口使用指南:含代码实现获取订单信息

一、引言 随着电子商务的飞速发展&#xff0c;越来越多的企业开始通过1688平台进行采购和销售。为了更好地管理订单&#xff0c;提高客户满意度&#xff0c;许多企业选择使用1688订单详情接口来获取订单信息。本文将详细介绍如何使用1688订单详情接口&#xff0c;并提供示例代…

2023 年山东省职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题

2023 年山东省职业院校技能大赛&#xff08;高等职业教育&#xff09; “信息安全管理与评估”样题 目录 任务 1 网络平台搭建&#xff08;50 分&#xff09; 任务 2 网络安全设备配置与防护&#xff08;250 分&#xff09; 模块二 网络安全事件响应、数字取证调查、应用程序安…

Guava的注解处理机制

第1章&#xff1a;引言 Guava不仅仅是一个工具库&#xff0c;它更像是Java程序员的瑞士军刀&#xff0c;提供了一系列强大的功能&#xff0c;从集合操作到函数式编程&#xff0c;再到今天咱们要深入探讨的——注解处理机制。 注解&#xff08;Annotations&#xff09;&#x…

14:00面试,14:08就出来了,问的问题有点变态。。。。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

uniapp+vite+ts+express踩坑总结

1 关于引入express包报 import express from "express"; ^^^^^^ SyntaxError: Cannot use import statement outside a module的问题。 解决方案&#xff1a; 在package.json中添加type&#xff1a;“module”选项 2 Response is a type and must be imported …

Visio中如何在字母上打出上波浪线

1. 如何打出这样的带有波浪线的文字 我们在使用visio中&#xff0c;有时候遇见了特殊符号&#xff0c;比如下方这个带有波浪线的X&#xff0c;如何在visio打出这样的带有波浪线的文字&#xff1f; 2. 操作 首先输入你想打上上波浪线的字母&#xff0c;如下图所示 光标一定…

jmeter里如何添加Referer

按照此实例添加即可。 例如&#xff1a;接口

Flutter实现Android拖动到垃圾桶删除效果-Draggable和DragTarget的详细讲解

文章目录 Draggable介绍构造函数参数说明使用示例 DragTarget 介绍构造函数参数说明使用示例 DragTarget 如何接收Draggable传递过来的数据&#xff1f; Draggable介绍 Draggable是Flutter框架中的一个小部件&#xff0c;用于支持用户通过手势拖动一个子部件。它是基于手势的一…

常州经开区大学生音乐节——常州首届校园乐队比赛

2023年12月9日下午&#xff0c;由江苏省文化馆指导、常州经开区社会事业局主办、常州柒号文化传播有限公司承办、百吉琴行协办的青春制“燥”大学生音乐节——常州首届校园乐队比赛&#xff0c;在常州经开区文化活动中心顺利举办。 常州经开区社会事业局副局长 方姣 为本次比赛…

光栅化渲染:顶点属性插值及透视校正

要使基础的光栅化器正常工作&#xff0c;我们需要做的就是知道如何将三角形投影到屏幕上&#xff0c;将投影坐标转换为光栅空间&#xff0c;然后光栅化三角形&#xff0c;并可能使用深度缓冲区来解决可见性问题。 这已经足以创建 3D 场景的图像&#xff0c;这些图像既是透视正确…

非标设计之中间继电器

目录 一、简介&#xff1a;二、结构和原理&#xff1a;三、中间继电器分类四、中间继电器作用&#xff1a;五、线路图&#xff1a; 一、简介&#xff1a; 在很多的家用电器上(如自动洗衣机、电炉加温等等)&#xff0c;为了防止电流过大而损伤电器&#xff0c;因此在电器上面安装…

大学生创新创业平台竞赛管理子系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本大学生创新创业平台竞赛管理子系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完…

16:00的面试,16:07就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到六月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…

Docker-compose单机容器集群编排

yml文件概述 是一种标记语言&#xff0c;以竖列的形式展示序列化的数据&#xff0c;可读性高。 类似于json格式&#xff0c;语法简单。 YAML通过缩进来标识数据结构&#xff0c;连续的项目用-减号来表示。 yml文件使用注意事项&#xff1a; 1、大小写敏感2、通过缩进表示层级…

文心一言 VS 讯飞星火 VS chatgpt (155)-- 算法导论12.3 2题

二、用go语言&#xff0c;假设通过反复向一棵树中插人互不相同的关键字来构造一棵二叉搜索树。证明&#xff1a;在这棵树中查找关键字所检查过的结点数目等于先前插入这个关键字所检查的结点数目加 1。 文心一言&#xff1a; 为了证明这个结论&#xff0c;我们可以使用二叉搜…

JavaScript中的构造函数是什么,如何使用ES6中的类来进行构造函数的封装和继承?

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习讲解&#xff1a; 深入对象 创建对象三种方式 构造函数 练习 实例化执行过程 说明&#xff1a;1. 创建新对象2. 构造函数this指向新对象3. 执行构造函数代码&#xff0c;修改this&#xff…