1

我创建了一个程序,该程序从给定的单词中随机生成一个字母,该单词存储在字符数据类型数组中。

例如:

strong 和 r 生成并显示。

如何获得 r 的位置并显示它?

s - 1,t - 2,r -3,o - 4,n - 5,g -6。字母 r 是第三个字母。

由于我已将单词存储在字符数组中,因此默认情况下数组的索引值从 0 开始,我无法重置它。

我已经生成了 r,如何在不篡改字符数组的情况下获取并显示它的位置?

无论如何,我可以在哪里比较随机生成的 r 及其位置?

4

4 回答 4

0

你必须这样做是C#吗?因为您可以使用 php 执行此操作:

<?php
$mystring = 'strong';
$findme   = 'r';
$pos = strpos($mystring, $findme);
$posadj = $pos +1; //this will offset because the array starts at 0.

// must use ===
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos which when offset is really $pos1.";
}
?>

此代码段的结果是 $pos = 2 和 $pos1 = 3。

于 2013-07-24T09:04:52.807 回答
0

Array.IndexOf Method (Array, Object)是你的朋友:

int index = Array.IndexOf(characters, randomChar) + 1;
//+1 at the end because indexes are zero-based
于 2013-07-24T08:32:20.717 回答
0

由于您不提供任何代码,所以让我展示一下我将如何实现它:

public static string RandomChar(string s) {
    Random r = new Random();
    int i = r.Next(s.Length);
    return s[i] + " - " + (i+1);
}

这会随机选择一个索引并返回该索引处的字符以及该字符的从 1 开始的索引,例如"r - 3".

调用它:

string result = RandomChar("strong");
// Do something with the result, e.g. Console.WriteLine(result).
于 2013-07-24T08:32:29.483 回答
0

您可以Array.IndexOf按如下方式使用:

var word = new[] { 's', 't', 'r', 'o', 'n', 'g' };
var character = 'r';

var position = Array.IndexOf(word, character);

注意:由于数组是零索引的,因此您需要在 position 上加 1 才能得到3,因为 IndexOf 将2在此示例中返回。

如果你想显示给定字符的所有位置,那么你需要创建一个方法来找到它们(类似这样的东西,尽管它可能会被改进):

public static IEnumerable<int> AllIndexesOf<T>(this T[] source, T value)
        where T : IComparable<T>
{
    if (Array.IndexOf(source, value) == -1)
    {
        yield return -1;
        yield break;
    }

    var position = Array.IndexOf(source, value);

    while (position > 0)
    {
        yield return position;
        position = Array.IndexOf(source, value, position + 1);
    }

    yield break;
}

然后您可以按如下方式使用它:

var word = new[] { 's', 't', 'r', 'o', 'n', 'g', 'e', 'r' };
var character = 'r';

foreach (var position in word.AllIndexesOf(character))
{
    Console.WriteLine(position.ToString());
}
于 2013-07-24T08:36:19.137 回答