小编Leo*_*eon的帖子

String.Replace不替换所有匹配项

为什么line2只替换一半的事件?

    Dim line1 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"
    Dim line2 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"
    Dim line3 As String = "AAA|BBB|CCC|CCC|CCC|CCC|EEE|FFF"

    line1 = line1.Replace("CCC", "")
    line2 = line2.Replace("|CCC|", "||")
    line3 = line3.Replace("CCC|", "|")
Run Code Online (Sandbox Code Playgroud)

结果:

line1 = "AAA|BBB|||||EEE|FFF" -- OK, but fails when element is "..|ZZZCCCZZZ|.."
line2 = "AAA|BBB||CCC||CCC|EEE|FFF" -- Not OK
line3 = "AAA|BBB|||||EEE|FFF" -- OK, but fails similar to Line1 edge-case for "..|ZZZCCC|.."
Run Code Online (Sandbox Code Playgroud)

我尝试过使用RegEx,但得到了类似的结果.

下面真的没有比这更好的方法吗?

Do While line1.Contains("|CCC|")
    line1 = line1.Replace("|CCC|", "||")
Loop
Run Code Online (Sandbox Code Playgroud)

.net vb.net string replace

5
推荐指数
1
解决办法
2313
查看次数

将 UInt64 表示为字符串的最短方法

我得到一个可能很大的数字(UInt.MaxValue:18446744073709551615)作为正常的base10数字。这个数字最终会成为一个文件名:12345678945768.txt

由于 Windows 上的文件名不仅限于数字,我想将其“压缩”为更短的字符串,但需要确保字符串可以映射回数字。

对于较小的数字:0001365555,十六进制比其他数字短得多。到目前为止我发现的所有内容都表明 Base64 是最短的,但事实并非如此。

到目前为止我已经尝试过这个:

//18446744073709551615 - 20
UInt64 i = UInt64.MaxValue; // 0001365555

//"//////////8=" - 12
string encoded = Convert.ToBase64String(BitConverter.GetBytes(i)); 

//"FFFFFFFFFFFFFFFF" - 16
string hexed = i.ToString("X"); 

//"MTg0NDY3NDQwNzM3MDk1NTE2MTU=" - 28
string utf = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(i.ToString())); 
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来“压缩”整数以类似于十六进制进行转换,但使用 00-zz 而不仅仅是 00-FF?

提前致谢!

.net c# compression string uint64

2
推荐指数
1
解决办法
3803
查看次数

ViewModel/Business Logic的企业架构

这是一个高级项目组织问题.

组织包含许多子应用程序的项目/解决方案(Visual Studio)的"正确"方法是什么?

这必须是大型企业级项目中的常见问题.任何人都可以指向白皮书/书籍/链接,以帮助决定如何构建这个?

在24小时内学习企业架构将是完美的,但似乎并不存在.

我们的第一次尝试遵循3层服务架构,但除了通用业务功能(ProcessOrder(..),BalanceAccount(..)等),我们还需要特定于应用程序的数据.

遵循n层架构,所有应用程序仍然需要通过BLL - > DLL来获取任何信息(ViewModel,特定于应用程序的数据).

一些模型类(BOM)是通用的,可以在整个过程中使用(订单,账单,账户,客户等)

一种选择是将所有业务实体集中在同一个Enterprise.BOM项目下,并具有多个名称空间 - 一些是全局的,一些是ViewModel类的特定应用程序.

然后BLL和DAL层将遵循相同的组织 - 每个应用程序都有自己的命名空间,并且在任何地方使用的东西都放在根命名空间中.

但随着应用程序数量的增长,重用现有对象/进程将是一项挑战(即每个应用程序可能需要对Bill信息执行某些操作,但不应定义自己的Bill类,而应使用BLL/DAL中的现有类).

从顶部强制要求的另一个方向是以SOA-izable方式开发所有内容:"应用程序"有效地成为BLL中定义的所有流程业务逻辑的视图/工作流,因此"应用程序"(基本上是UI)可以替换为服务层向外部系统公开功能.

如果相关,我们是一个带有规则引擎的.NET商店,但是没有工作流程(虽然它可能在一两年内,因此未来的WS集成很重要).

提前致谢!

architecture business-logic view n-tier-architecture

1
推荐指数
1
解决办法
541
查看次数