string - 将字符串替换为格式字符串

标签 string vb.net replace

我有以下输入:

Dim str_format as string = "XXXXX00000"
Dim str as string = "INV"
Dim int as integer = "56"

如何将 XXXXX 替换为 INV 并将 00000 替换为 56

对于上面的示例,结果应为 INVXX00056

如果str超过五个字母,则

X只能用字母替换,0只能用整数替换。多余的字母将被丢弃,因为 str_format 只有五个 X。同样的算法也适用于整数。

示例2

Dim str_format as string = "XXX00000"
Dim str as string = "ABCD"
Dim int as integer = 654321

预期结果:ABC54321

流程:

1. ABCD XXX00000 654321
2. ABC DXX000006 54321
3. AB CDX00065 4321
4. A BCD00654 321
5. ABC06543 21
6. ABC65432 1
7. ABC54321

最佳答案

正如蜘蛛侠提到的...显示一些代码。也就是说,您描述的过程有点冗长。

解决方案的字母部分可以通过使用 Left(str,3) 抓取 str 的前 3 个字符来完成,这将引入最左边的 3 个字符(如果更少,则会得到还有什么)。然后使用 str.Length() 检查是否有 3 个字符。如果长度小于 3,则附加适当数量的“X”。

数字部分可以用类似的方式完成。您的 int 实际上是上面代码中的一个字符串。如果它是一个实整数,您可以将其转换为字符串。使用 Right(int,5)。再次检查是否有 5 位数字,如果没有则在前面添加适当的数字 0。

尝试一下...如果您遇到问题,请发布代码,一定会有人提供帮助。

更新

因为这里发布了实际答案,所以这是我的解决方案

Function FormatMyString(str As String, num as String) As String

    Dim result As String

    result = Left(str,3).PadRight(3, "X"c).ToUpper() & Right(num,5).PadLeft(5, "0"c)

    Return result

End Function

更新2

根据 Wiktors 的回答...对我的解决方案进行了修改以应对不同的格式

Function FormatMyString(str As String, num as String, alpha as Integer, digits as Integer) As String

    Dim result As String

    result = Left(str, alpha).PadRight(alpha, "X"c).ToUpper() & Right(num, digits).PadLeft(digits, "0"c)

    Return result

End Function

To use... 
FormatMyString("ABCDE", "56",3 5) will return ABC00056
FormatMyString("ABCDE", "123456",4 3) will return ABCD456
FormatMyString("AB", "123456",4 3) will return ABXX456

关于string - 将字符串替换为格式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41238052/

相关文章:

C 将字符串解析为不带分隔符的单独变量?

c# - 如何概括我的算法以检测一个字符串是否是另一个字符串的旋转

c# - 需要一个通过 USB 端口控制的 Switch 组件

mysql - 过滤 DataGrid 中的数据

java - 替换一个字符串。

javascript - 小书签帮助 : Creating a Find/Replace Bookmarklet

php - 使用 PHP 从字符串中转义所有特殊字符

c++ - 将字符串的填充构造函数与初始化列表一起使用

vb.net - 处理从 dll 内部抛出的异常

java - 如何在Java中用连字符分解字符串?