C#字符串去重复问题,新手求助

DLnetchengxuyuan 2012-09-14 12:58:54
现在遇到这一问题,如果两个字符串中,有连续相同的4个字,那么就返回true。


strone="天成软件公司";
strthree="中国山东变压器厂";
strtwo="北京天成软件技术有限责任公司";
strfour="河北变压器厂";

strone 和strtwo都有"天成软件"这四个字。返回true
strthree和strfour都有"变压器厂"这四个字,返回true

我现在写个一个方法可是出错了。希望大家指教
public static Boolean UniqueValue(String strone,String strtwo)
{
String str = strone;
String stronezi="";
for (int i = 0; i < strone.Length-4;i++ )
{

stronezi=strone.Substring(i,i+4); //得出第一个字符串的四个字符
if (strtwo.Contains(stronezi)) //比较
{
return true;
}

}
return false;
}





...全文
328 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DLnetchengxuyuan 2012-09-14
  • 打赏
  • 举报
回复
谢谢,大家的帮忙。问题成功解决了呵呵。。

分析原因:
C#中substring方法与其他语言中substring的用法不同
js中substring(start,end);
C#中substring(start,length);

呵呵,谢谢
zhleiyang 2012-09-14
  • 打赏
  • 举报
回复
改 stronezi=strone.Substring(i,i+4);

为 stronezi=strone.Substring(i,i+3);

字符数目错了
zhleiyang 2012-09-14
  • 打赏
  • 举报
回复
stronezi=strone.Substring(i,i+4); //得出第一个字符串的四个字符
这里是5个字符
改为
stronezi=strone.Substring(i,i+3);

为什么我中午发的帖子不显示?
csdn_风中雪狼 2012-09-14
  • 打赏
  • 举报
回复
直接用二楼的方法就可以了,
不错
  • 打赏
  • 举报
回复
代码已经写过,你测试一下看看,我觉得你对Substring方法的重载在理解上有一些误区,第二个参数是要截取的固定长度,而不是结束位置
mlg1991 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

修改如下C# code
public static Boolean UniqueValue(string strone, string strtwo)
{
string str = strone;
string stronezi = "";
for (int i = 0; i <= strone.Length - 4; i++)
{
stronezi = strone.Substring(i, 4); //得出第一个字符串的四个字符
if (strtwo.Contains(stronezi)) //比较
{
return true;
}

}
return false;
}

这个可以的
mlg1991 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

修改如下C# code
public static Boolean UniqueValue(string strone, string strtwo)
{
string str = strone;
string stronezi = "";
for (int i = 0; i……
[/Quote]

这个可以的
zhleiyang 2012-09-14
  • 打赏
  • 举报
回复
stronezi=strone.Substring(i,i+4); //得出第一个字符串的四个字符

你这样是5个字符了把

改为 stronezi=strone.Substring(i,i+3)
波波007 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
修改如下

C# code

public static Boolean UniqueValue(String strone, String strtwo)
{
String str = strone;
String stronezi = "";
for (int……
[/Quote]

认同楼上的!
DLnetchengxuyuan 2012-09-14
  • 打赏
  • 举报
回复
如果这样改了,那不就只是获得 当前字符位置和第四个位置之间的 字符串了???

可是我不确定连续相同的字符串在什么地方啊。
比如 strone="公司天成软件";

strtwo="北京技术有限责任公司天成软件";

这两个字符串 有相同“天成软件” 那么 按照你改的方法,可以成功吗????我感觉不行呢???
  • 打赏
  • 举报
回复
修改如下
public static Boolean UniqueValue(String strone, String strtwo)
{
String str = strone;
String stronezi = "";
for (int i = 0; i <= strone.Length - 4; i++)
{
stronezi = strone.Substring(i, 4); //得出第一个字符串的四个字符
if (strtwo.Contains(stronezi)) //比较
{
return true;
}

}
return false;
}
DLnetchengxuyuan 2012-09-14
  • 打赏
  • 举报
回复
希望各位前辈指教。。。。谢谢。。。

109,871

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧