2014-10-07 69 views
0

我似乎无法找到一个“好”的方式去执行任务的一个字符串C#字符串操作思路要求

说,如果我有一个字符串,其值是“拿巧克力” 和我使用.Contains方法检测该字符串是否包含字符串“cola”,并且其中包含“可乐”。我想让程序获取“可乐”中的“c”和“a”之后的字符之前的字符,以检查字符是否都是空格。任何想法如何解决这个问题?任何提示或想法都会很棒!

P.S.我正在制作一个相当广泛的基于文本的冒险游戏。

+0

可能[在一个句子找到一个字符串表达式]的重复之后的字符(http://stackoverflow.com/questions/5341407/finding-an-string-expression-in - 句子) – jac 2014-10-07 04:17:40

回答

1
static void Main(string[] args) 
    { 
     string s = "Take Chocolate"; 
     string searchString = "cola"; 

     int beginIndex = 0; 
     int endIndex = 0; 

     if (s.Contains(searchString)) 
     { 
      beginIndex = s.IndexOf(searchString, 0, s.Length); 
      endIndex = beginIndex + searchString.Length; 
     } 

     if(endIndex < s.Length) 
     { 
      Console.WriteLine(s[endIndex + 1]); 

     } 
     else 
     { 
      Console.WriteLine("There is no character after" + searchString); 
     } 

     if(beginIndex > 0) 
      Console.WriteLine(s[beginIndex - 1]); 
     else 
      Console.WriteLine("There is no character before" + searchString); 

    } 

这是一个很小的程序。希望能帮助到你。

+0

我忘记了indexof方法,我绝对可以使用这个 – DurpBurger 2014-10-07 04:29:21

+0

@DurpBurger它可能会产生我写出来的小错误。只需检查它。 – mybirthname 2014-10-07 04:32:41

+0

#mybirthname我可能会采用使用IndexOf的概念,其余部分似乎与我的目的不相关,但仍然是很好的代码。 – DurpBurger 2014-10-07 04:37:38

2

这很简单。当您检查.Contains(“可乐”)时,请检查.Contains(“可乐”)。希望这正是你想要做的。

+2

赔率是OP也愿意接受“可乐”在开始或结束时特林,在这种情况下,这是行不通的。 – Gabe 2014-10-07 04:21:24

+0

哇,我可以得到这个工作,我会尝试和实现这一点。 – DurpBurger 2014-10-07 04:22:24

3

您所描述的内容可以通过regular expressions轻松完成。然而,更简单的方法是将字符串拆分为空格,然后分析玩家命令的每个部分。

这里是一个高度简化的例子,但它得到的想法跨越:

var playerCommand = "Take Chocolate"; 

var parts = playerCommand.Split(); 
// NOTE: use StringComparison.CurrentCultureIgnoreCase for case insensitive comparison 
if (parts[0] == "Take") 
{ 
    if (parts[1] == "Chocolate") 
    { 
     DoTakeChocolate(); 
    } 
    else if (parts[1] == "Cola") 
    { 
     DoTakeCola(); 
    } 
    else 
    { 
     Console.WriteLine("There's no {0} here for you to take", parts[1]); 
    } 
} 

打破文本命令到,因为它们的初期这样一个简单的树已经在基于文本的冒险游戏的心脏。

0

如果你的任务是“确定如果短语包含单词”,你可以短语拆分成单词,然后检查他们每个人,

char[] delimiters = [',','.',' ']; // all delimiters that are not letters  
var phrase = "Take Chocolate, and,cola"; 
var containsCola = phrase.split(delimiters).Any(x => x.Equals("cola", StringComparison.OrdinalIgnoreCase); 
0

它在“可乐”中的“C”之前返回字符和的“a”在句子

Class6 c = new Class6(); 
var t = s.ToLower().Replace("cola", "##").Split(new char[] { ',', '.', ' ' }).Where(h => h.Contains("##")).Select(h => c.getFistAndLast(h)); 

    public class class6 { 
    public string getFistAndLast(string word) 
    { 
     string[] words = word.Split(new string[] { "##" }, StringSplitOptions.None); 
     string h = ""; 
     if (words[0].Trim() != "") 
      h = words[0].Remove(0, words[0].Length - 1)+","; 
     if (words[1].Trim() != "") 
      h += words[1][0]; 
     h += " "; 
     return h; 
    } 
    }